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

文章目录

    • 一、配置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://192.168.220.134/   

Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)_第1张图片
2、Nginx的配置文件中的server_tokens 选项的值设置为off

server_tokens off;  //关闭版本显示

Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)_第2张图片
3、重启服务

service nginx restart

4、再用 curl 命令查看版本
Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)_第3张图片

1.2、修改源码法

  • Nginx 源码文件 /usr/src/nginx-1.12.0/src/core/nginx.h
    包含了版本信息,可以随意设置
  • 重新编译安装,隐藏版本信息

1、修改版本号

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

#define NGINX_VERSION      "1.2.3"

Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)_第4张图片
2、配置编译

cd /opt/nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module 

make && make install

3、启动服务,查看版本

service nginx restart
curl -I http://192.168.220.134/  

Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)_第5张图片
注意:如果版本号没有伪造成功,也不显示,有可能是配置文件中关闭了版本显示。解决:删除server_tokens off;

二、修改Nginx用户与组

  • Nginx运行时进程需要有用户与组的支持,以实现对网站文件读取时进行访问控制
  • Nginx默认使用nobody用户账号与组账号,一般也要进行修改
  • 修改的方法:
    • 编译安装时指定用户与组
    • 修改配置文件指定用户与组

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

vim /usr/local/nginx/conf/nginx.conf
user nginx nginx; 

Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)_第6张图片
主进程由root创建 子进程由nginx创建
Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)_第7张图片

三、配置Nginx网页缓存时间

  • 当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度
  • 一般针对静态网页设置,对动态网页不设置缓存时间
  • 可在Windows客户端中使用fiddler查看网页缓存时间
  • 设置方法
    • 可修改配置文件,在http段、 或者server段、 或者location段加入对特定内容的过期参数

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

cp /mnt/httpd/game.jpg /usr/local/nginx/html/

Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)_第8张图片
2、将图片加入到网页内容中

cd /usr/local/nginx/html/

vim index.html
<img src="game.jpg"/>   //把这句话插入到html的body里

Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)_第9张图片
3、改nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf
#将以下代码放在 http {}段
location ~\.(gif|jepg|jpg|ico|bmp|png)$ {
            root html;
            expires 1d;
        }

Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)_第10张图片
4、启动服务

service nginx restart

5、在win10验证
Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)_第11张图片

四、配置日志分割

  • 随着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 /opt/fenge.sh
./fenge.sh

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

date -s 2019-12-25   //可以把当前的时间改为2019.12.25

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

crontab -e
0 1 * * * /opt/fenge.sh

五、实现连接超时

  • 在企业网站中,为了避免同- -个客户长时间占用连接,
    造成资源浪费,可设置相应的连接超时参数,实现控制
    连接访问时间
  • 使用Fiddler工具查看connection参数
  • 超时参数讲解
    • Keepalive_timeout
      设置连接保持超时时间,一般可只设置该参数,默认为75秒,可根据网站的情况设置,或者关闭,可在http段、server段、 或者location段设置
    • Client_header_timeout
      指定等待客户端发送请求头的超时时间
    • Client_body_timeout
      设置请求体读超时时间

1、修改配置文件

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

在http{}段
keepalive_timeout  65 188; #以后者为准,可以在http\server\location设置
client_header_timeout 80; #等待客户端发送请求头的超时时间超时会发送408错误
client_body_timeout 80;   #设置客户端发送请求体超时时间

#重启服务
service nginx restart 

Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)_第13张图片
在win10用fidder验证。
Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)_第14张图片

你可能感兴趣的:(web服务群集)