nginx服务优化配置(隐藏版本、用户和组、网络缓存、日志分割、连接超时)

优化的目录

一、隐藏版本号
二、修改用户和组
三、配置网络缓存时间
四、日志分割
五、连接超时配置

一、隐藏nginx版本号(两种方法):

当前使用的nginx可能会有未知的漏洞,如果被黑客使用将会造成无法估量的损失,但是我们可以将nginx的版本隐藏,
隐藏版本号有两种方式,一种是修改Nginx的源码文件,指定不显示版本号,第二种是修改Nginx的主配置文件

(1)修改主配置文件的方式如下:

将Nginx的配置文件中的server_tokens选项值设置为off,如没有该配置项,加上即可。

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf  
...........    #省略内容
    http {
       include       mime.types;
       default_type  application/octet-stream;
       server_tokens     off;    #关闭版本号
............    #省略内容
[root@localhost ~]# nginx -t    #测试配置文件
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

再次访问网址,只显示Nginx,版本号已经隐藏。

[root@localhost ~]# service nginx restart #重新启动nginx服务
[root@localhost ~]# curl -I http://192.168.154.131/
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 13 Nov 2019 05:49:43 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 612
Last-Modified: Tue, 12 Nov 2019 08:57:40 GMT
Connection: keep-alive
ETag: "5dca7404-264"
Accept-Ranges: bytes

(2)Nginx的源码文件包含了版本信息,可以随意设置,然后重新编译安装,就会隐藏版本信息。

[root@localhost ~]# vim /opt/nginx-1.12.0/src/core/nginx.h #编辑源码文件

#define NGINX_VERSION      "1.1.1"              #修改版本号
#define NGINX_VER          "IIS" NGINX_VERSION  #修改服务器类型

重新编译安装

[root@localhost ~]# cd nginx-1.12.0/
[root@localhost nginx-1.12.0]#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install

再次访问网址,只显示修改之后的版本信息。

[root@localhost nginx-1.12.0]# service nginx restart      #重启nginx服务
[root@localhost nginx-1.12.0]# curl -I  http://172.16.10.10/HTTP/1.1 200 OK
HTTP/1.1 200 OK
Server: nginx/1.1.1
Date: Wed, 13 Nov 2019 05:55:44 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 612
Last-Modified: Tue, 12 Nov 2019 08:57:40 GMT
Connection: keep-alive
ETag: "5dca7404-264"
Accept-Ranges: bytes

二、修改用户和组

Nginx运行时进程需要有用户与组的支持,用以实现对网站文件读取时进行访问控制。主进程由root创建,子进程由指定的用户与组创建。Nginx默认使用nobody用户账号与组账号,一般要修改。

(1)编译Nginx时指定用户与组,就是配置nginx时,在./configure后面指定用户与组的参数。

[root@localhost ~]# cd nginx-1.12.0/
[root@localhost nginx-1.12.0]#./configure --prefix=/usr/local/nginx 
--user=nginx    #指定用户名是nginx
--group=nginx   #指定组名是nginx
......

make && make install

(2)修改Nginx配置文件nginx.conf指定用户与组。

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf 

user nginx nginx;     #修改用户为nginx,组为nginx

重启nginx查看进程运行情况,主进程由root账户创建,子进程由nginx创建。

[root@localhost ~]# ps aux | grep nginx
root      14923  0.0  0.0  20540   624 ?        Ss   17:30   0:00 nginx: master process /usr/local/nginx/sbin/nginx   #主进程由root创建
nginx     14925  0.0  0.1  22984  1412 ?        S    17:30   0:00 nginx: worker process           #子进程由nginx创建
root      19344  0.0  0.0 112720   984 pts/0    R+   17:47   0:00 grep --color=auto nginx

三、配置网页缓存时间

当Nginx将网页数据返回给客户端后,可设置缓存时间,方便日后进行相同内容请求是直接返回,避免重复请求,加快访问速度,一般只针对静态资源进行设置,对动态网页不用设置缓存时间。
操作步骤如下所示:

(1)以图片作为缓存对象,将game.jpg放到Nginx的网站目录下。

[root@localhost ~]# cd /usr/local/nginx/html/    #Nginx的网站目录
[root@localhost html]# ls
50x.html  error.png  game.jpg  index.html

(2)访问http://192.168.154.131/game.jpg, 再用Fidder工具抓包,查看响应报文,没有图片的缓存信息。
在这里插入图片描述
(3)修改配置文件,在新的location段加入expire参数,指定缓存时间,1d表示一天

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

    location ~\.(gif|jpg|jepg|png|bmp|ico)$ {    #加入新的location
        root html;
        expires 1d;     #指定缓存时间
        }

(4)重启nginx服务,访问网址抓包,响应报文中含有Expire参数,表示缓存的时间

[root@localhost ~]# service nginx restart

在这里插入图片描述

四、日志切割

随着Nginx的运行时间的增加,产生的日志也会增加。太大的日志文件非常不便于分析和排查,因此需要定期的进行日志文件的切割。Nginx没有类似Apache的cronlog日志分割处理功能,但可以通过Nginx的信号控制功能脚本来实现日志的自动切割,并将脚本加入到Linux的计划任务中,让脚本在每天的固定时间执行

(1)首先编写脚本/opt/fenge.sh,把Nginx的日志文件/usr/local/nginx/logs/access.log移动到目录/var/log/nginx下面,以当前时间作为日志文件的名称,然后用kill-USR1创建新的日志文件/usr/local/nginx/logs/access.log,最后删除前30天的日志文件

[root@localhost ~]# vim /fenge.sh 

#!/bin/bash
#Filename:fenge.sh
d=$(date -d "-1 day" "+%Y%m%d")    #显示一天前的时间
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $logs_path ] || mkdir -p $logs_path   #创建日志文件目录
mv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$d   #移动并重命名日志文件 
kill -USR1 $(cat $pid_path)       #重建新的日志文件
find $logs_path -mtime +30 | xargs rm -rf   #删除30天之前的日志文件

(2)执行/fenge.sh,测试日志文件是否被切割

[root@localhost ~]# chmod +x /fenge.sh 
[root@localhost ~]# ./fenge.sh #执行分割脚本
[root@localhost ~]# ls /var/log/nginx/
test.com-access.log-20191113

(3)设置crontab任务,定期执行脚本自动进行日志分割

[root@localhost ~]# crontab -e
0 2 * * * /fenge.sh   #每天的凌晨2点执行/fenge.sh脚本

五、设置连接超时

在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可以设置相应的连接超时参数,实现对连接访问的时间的控制

(1)修改配置文件nginx.conf,设置keepalive_timeout超时时间

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
   ...    #省略内容
  http {
    ...
    keepalive_timeout  65 180;  #设置超时是180秒
    client_header_timeout 80;   #指定请求头的超时时间 
    client_body_timeout 80;     #指定请求体超时时间
    ...     #省略内容
     }

keepalive_timeout 第一个参数指定了与客户端的keep-alive连接超时时间,服务器将会在这个时间后关闭连接;第二个参数指定了响应头Keep-Alive:timeout=time中的time值。这个头能让浏览器主动关闭连接,这样服务器就不必去关闭连接

(2)重启nginx服务,访问网址,用Fidder工具抓包
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值