前言
在企业信息化环境中,服务器的安全性和响应速度需要根据实际情况进行相应安全配置以达到最优用户体验。
默认的Nginx安装只能提供最基本的服务,还需要调整如网页缓存时间、连接超时、网页压缩相应参数,才能发挥出服务器的最大作用。
提示:以下是本篇文章正文内容,下面案例可供参考
一、Nginx服务优化
1、隐藏版本号
在生产环境中,需要隐藏Nginx的版本号,以避免泄露Nginx版本号,使攻击者无法针对特定版本漏洞攻击。
1.1 查看版本号
在隐藏Nginx版本号之前先用curl命令查看当前Nginx版本。可以使用 Fiddler 工具抓取数据包,查看 Nginx版本,也可以在 CentOS 中使用命令 curl -I http://192.168.59.118 显示响应报文首部信息。
curl -I http://192.168.94.151
1.2 隐藏方法一:修改Nginx源代码文件
指定不显示版本号,将Nginx的配置文件中的server_tokens选项值设置为off,如果没有加上即可。
演示:
1.#修改配置文件 vim /usr/local/nginx/conf/nginx.conf ```handlebars http { include mime.types; default_type application/octet-stream; server_tokens off; #添加,关闭版本号 ...... } 2.#重启nginx systemctl restart nginx 3.#查看版本是否被隐藏 curl -I http://192.168.59.118 2.#重启nginx systemctl restart nginx 3.#查看版本是否被隐藏 curl -I http://192.168.59.118
结果:
1.3 隐藏方法二:修改源码文件,重新编译
Nginx源码文件 /usr/src/nginx-1.20.2/src/core/nginx.h 包含了版本信息,可以随意设置,然后重新编译,就可以隐藏版本号了。
演示:
1. #切换至nginx安装包所在目录 cd /opt/ 2. #停止nginx服务 systemctl stop nginx.service 3. #切换至安装目录 cd nginx-1.12.0/ 4. #切换至内核目录 cd src/core/ 5. #进入配置文件 vim nginx.h #define NGINX_VERSION "yxp" #define NGINX_VER "yyy/" NGINX_VERSION 6. #切换至文件目录 cd ../../ 7. #编译 ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-http_stub_status_module 8. #安装 make && make install -j4 9. #将配置文件下的之前关闭版本信息开启 vim /usr/local/nginx/conf/nginx.conf server_tokens on; 10. #重启nginx systemctl restart nginx 11. #查看版本信息 curl -I http://192.168.59.118
2、修改用户与组
Nginx运行时进程需要有用户与组支持,用以实现对网站文件读取进行访问控制。主进程由root创建,子进程由指定的用户与组创建。Nginx默认使用nobody用户与组账号,一般也要进行修改。
2.1 方法一:修改配置文件指定用户与组
整体操作:
1. #修改配置文件 vim /usr/local/nginx/conf/nginx.conf user cs cs; #取消注释,修改用户为 cs ,组为 cs 2. #创建非登录用户 useradd -s /sbin/nologin lili 3. #重启服务 systemctl restart nginx 4. #查看是否修改成功 ps aux | grep nginx
重启Nginx查看进程运行情况,主进程由root用户创建,子进程由cs用户创建
2.2 方法二:在编译安装Nginx时指定用户与组
就是在配置Nginx时,在./configure后面指定用与组的参数
./configure --pre=/usr/local/nginx --user=cs #指定用户是cs --group=cs #指定组是cs --with-http_stub_status_module && make && make install
3、配置网页缓存时间
当 Nginx 将网页数据返回给客户端后,可设置缓存的时间,以方便日后进行相同的请求时直接返回,避免重复请求,加快访问速度,一般只针对静态资源进行设置,对动态网页不用设置缓存时间。
整体操作:
1. #修改配置文件 vim /usr/local/nginx/conf/nginx.conf #添加以下内容 location ~ \.(gif|jpg|jepg|png|bmp|ico)$ { #加入新的 location,以图片作为缓存对象 root html; expires 1d; #指定缓存时间,1天 } 2. #查看是否有语法错误 nginx -t 3. #重启服务 systemctl restart nginx.service 4.#在网页中查看服务 http://192.168.59.118/game.png Cahce-Control:max-age=86400 表示缓存时间是 86400 秒。也就是缓存一天的时间,一天之内浏览器访问这个页面,都是用缓存中的数据,而不需要向 Nginx 服务器重新发出请求,减少了服务器的使用带宽。
演示:
(1)以图片作为缓存对象,复制tutu.jpg 图片到 Nginx 的工作目录,访问
http://192.168.94.151/1ogo.jpg,用 Fiddler 工具进行抓包,如图 8.1 所示,查看响应报文,没有图片的缓存信息。
cd /usr/local/nginx/html 先将tutu.jpg文件传到/usr/local/nginx/html目录下 vim index.html ...... <img src="tutu.jpg"/> #网页中插入图片 </body> </html>
(2)修改Nginx的配置文件,在新location段加入expires参数,指定缓存时间,1d表示一天。
vim /usr/local/nginx/conf/nginx.conf #添加以下内容 location ~ \.(gif|jpg|jepg|png|bmp|ico)$ { #加入新的 location,以图片作为缓存对象 root html; expires 1d; #指定缓存时间,1天 }
(3)重启Nginx服务后,访问网址后,访问网址抓包,响应报文中有expires有效期。其中的Cache-Control:max-age=86400秒,也就是缓存一天。