Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)相关的知识,希望对你有一定的参考价值。

[TOC]

文章目录

一、配置nginx隐藏版本号

1.1、修改配置文件法

1.2、修改源码法

二、修改Nginx用户与组

2.1、修改配置文件指定用户与组

三、配置Nginx网页缓存时间

四、配置日志分割

五、实现连接超时

nginx的安装已经提前配置好了,需要的可以参考我的博客,链接为:Nginx 的配置

一、配置Nginx隐藏版本号

在生产环境中,需要隐藏Nginx的版本号,以避免安全漏洞的泄漏

查看方法

使用fiddler工具在Windows客户端查看Nginx版本号

在CentOS系统中使用"curl -I 网址”命令查看

Nginx隐藏版本号的方法

修改配置文件法

修改源码法

1.1、修改配置文件法

1、先查看版本基本信息

curl -I http://自己的IP地址

技术图片

2、Nginx的配置文件添加:server_tokens 选项的值设置为off

vim /usr/local/nginx/conf/nginx.conf

http {
     include        mime.types;
     default_type   application/octet-stream;
#下面添加一段,关闭版本显示      
      server_tokens off;

技术图片

3、重启服务

//先关闭服务,再开启服务
service nginx stop
service nginx start

4、再用 curl 命令查看版本

技术图片

1.2、修改源码法

Nginx 源码文件 /pot/nginx-1.12.0/src/core/nginx.h

包含了版本信息,可以随意设置

重新编译安装,隐藏版本信息

1、修改版本号

#先把刚才添加的那段话的 off(关闭),改成 on(开启)
vim /usr/local/nginx/conf/nginx.conf

cd /opt/nginx-1.12.2/src/core/

vim /opt/ningx-1.12.2/src/core/nginx.h

define nginx_version    1012002
define NGINX_VERSION    "1.1.1"     //自定义一个版本号
define NGINX_VER    "nginx/" NGINX_VERSION

技术图片

技术图片

2、配置编译

cd nginx-1.12.2/

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

make && make install

3、启动服务,查看版本

#在启动服务
service nginx stop
service nginx start

#在查看,就会发现有一个我们自己伪造的一个版本号
curl -I http://IP地址/

Sercer: nginx/1.1.1  #伪造的版本号

技术图片

注意:如果版本号没有伪造成功,也不显示,有可能是配置文件中关闭了版本显示。解决:删除server_tokens off;

二、修改Nginx用户与组

Nginx运行时进程需要有用户与组的支持,以实现对网站文件读取时进行访问控制

Nginx默认使用nobody用户账号与组账号,一般也要进行修改

修改的方法:

编译安装时指定用户与组

修改配置文件指定用户与组

2.1、修改配置文件指定用户与组

vim /usr/local/nginx/conf/nginx.conf

#user  nobody;
//去掉前面注释符“ # ”,修改 nobody 指定用户与组 nginx nginx;

技术图片

主进程由root创建 子进程由nginx创建

三、配置Nginx网页缓存时间

当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度

一般针对静态网页设置,对动态网页不设置缓存时间

可在Windows客户端中使用fiddler查看网页缓存时间

设置方法 :

可修改配置文件,在http段、 或者server段、 或者location段加入对特定内容的过期参数

1、复制一张图片到 nginx 的站点目录下

#在自己的共享文件中 找到" game.jpg "
mkdir /abc
mount.cifs //192.168.56.1/lamp7 /abc
cd /abc/wl
//我的图片在wl的包里
//复制图片 game.jpg  到站点目录下
cp /abc/wl/game.jpg /usr/local/nginx/html/
cd /usr/local/nginx/html

技术图片

2、将图片加入到网页内容中

#修改
vim index.html

#在 Welcome to nginx 的下面添加一段
<img src="game.jpg"/>

技术图片

3、改nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf
#在 http {}段,添加一个
location ~.(gif|jepg|jpg|ico|bmp|png)$ {
    root    html;
    expires 1d;
}

技术图片

4、启动服务

#重启服务
service nginx restart

5、在win10验证

技术图片

四、配置日志分割

随着Nginx运行时间增加,日志也会增加。为了方便掌握Nginx运行状态,需要时刻关注Nginx日志文件

太大的日志文件对监控是一个大灾难

定期进行日志文件的切割

Nginx自身不具备日志分割处理的功能,但可以通过Nginx信号控制功能的脚本实现日志的自动切割,并通过Linux的计划任务周期性地进行日志切割

编写脚本进行日志切割的思路 :

设置时间变量

设置保存日志路径;

将目前的日志文件进行重命名

删除时间过长的日志文件

设置cron任务,定期执行脚本自动进行日志分割

1、编写脚本实现分割

vim /opt/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

技术图片

2、执行脚本

chmod +x fenge.sh
./fengs.sh
//可以把当前时间修改为2019.12.29,(可以自定义)
date -s 2019-12-29

技术图片

3、设置cron任务,定期执行脚本自动进行日志分割

执行周期性计划任务
crontab -e
0 1 * * * /opt/fengs.sh

五、实现连接超时

在企业网站中,为了避免同- -个客户长时间占用连接,

造成资源浪费,可设置相应的连接超时参数,实现控制

连接访问时间

使用Fiddler工具查看connection参数

超时参数讲解 :

Keepalive_timeout

设置连接保持超时时间,一般可只设置该参数,默认为75秒,可根据网站的情况设置,或 者关闭,可在http段、server段、 或者location段设置

Client_header_timeout

指定等待客户端发送请求头的超时时间

Client_body_timeout

设置请求体读超时时间

1、修改配置文件

cd /usr/local/nginx/conf  
vim nginx.conf
#在 http {}段 :下面添加

keepalive_timeout    65  180;
client_header_timeout 80;
client_body_timeout 80;

//重启服务
service nginx restart

技术图片

在win10用fidder验证。

技术图片

以上是关于Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)的主要内容,如果未能解决你的问题,请参考以下文章

Web服务不可缺少的Nginx 服务优化与防盗链

Nginx服务优化(由浅到深)!

Nginx服务优化(由浅到深)!

Nginx优化---隐藏版本号与网页缓存时间

Nginx之隐藏版本号,优化缓存,日志分割

Nginx服务优化