实验目的

1.使用2种方法成功隐藏Nginx版本号

2.配置网页缓存时间为1天

3.设置日志分割

 

实验环境

已搭建Nginx服务基础,可参考https://blog.51cto.com/13760351/2160042

服务器:CentOS 6.5系统

IP地址 :192.168.100.10
window 7 做客户端:192.168.100.22
yum仓库已搭建,共享软件包挂载在linux下

关闭防火墙,安全性

 

实验步骤


隐藏Nginx服务版本号需求: 
在实际生活中,需要隐藏nginx版本号,使其他人员不能针对版本进行不当操作,一定程度上增强安全功能。

下面简单介绍2种方法对版本号进行设置:第一种是修改Nginx配置文件,第二种是修改Nginx源码文件。


一、方法1:隐藏版本号

1.查看版本号

[root@localhost conf]# curl -I http://192.168.100.10/
HTTP/1.1 200 OK
Server: nginx/1.2.8               #显示出版本号

 

2.修改配置文件

[root@localhost ~]# cd /usr/local/nginx/conf
[root@localhost conf]# vim nginx.conf
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens off;                            #添加此行,关闭版本号

 

3.再次查看版本号

[root@localhost conf]# service nginx restart
[root@localhost conf]# curl -I
http://192.168.100.10/
HTTP/1.1 200 OK
Server: nginx                #只显示名字,已隐藏版本号


方法2:修改Nginx源码文件

4.修改版本号

[root@localhost conf]# vim /opt/nginx1.2.8/src/core/nginx.h  #编辑源码文件

Nginx 服务安全优化---隐藏版本号、网页缓存、日志分割_第1张图片

 

5.重新编译安Nginx装源码文件

[root@localhost nginx-1.2.8]# ./configure \      #重新配置
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

[root@localhost conf]# make && make install     #重新编译安装

 

6.打开版本号

[root@localhost conf]# vim nginx.conf
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens on;                    #打开版本号

……

7.查看版本号

[root@localhost conf]# curl -I http://192.168.100.10/ #查看版本号
HTTP/1.1 200 OK
Server: nginx/1.1.2                        #版本号已修改为虚假版本号

 

需求:当nginx将网页数据返回给客户时,可设置缓存时间,以便日后进行相同内容的请求时可直接返回 ,避免重复请求,加快访问速度,一般针对静态资源。

 

二、配置网页缓存

1.用抓包图片缓存信息

Nginx 服务安全优化---隐藏版本号、网页缓存、日志分割_第2张图片

 

2.修改配置文件

[root@localhost conf]# vim nginx.conf

  ……     

  location / {
            root   html;
            index  index.html index.htm;

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

3.重启Nginx

[root@localhost ~]# service nginx restart

 

4.抓包验证

Nginx 服务安全优化---隐藏版本号、网页缓存、日志分割_第3张图片

 

日志切割原因:

随着nginx运行时间的增加,产生日志也会增加。而太大的日志文件对监控是一个大灾难,非常不方便分析排查,因此需要定期进行日志文件切割

 

三、日志分割

1.编写脚本

[root@localhost conf]# cd /usr/local/nginx/logs/access.log

[root@localhost conf]# vim /opt/fenge.sh    #编写shell脚本

 

#!/bin/bash

# Filename:fenge.sh

d=$(date -d "-1 day" "+%Y%m%d")   #获取当前时间的前一天,也就是往前推一天

logs_path="/var/log/nginx"    #指定保存Ngixn日志路径

pid_path="/usr/local/nginx/logs/nginx.pid"   #Nginx进程ID路径

[ -d $logs_path ] || mkdir -p $logs_path     #判断定义的路径是否存在,不存在创建目录

mv /usr/local/nginx/logs/access.log  $logs_path/bt.com-access.log-$d    #将Nginx剪切至定义的目录下,并且用日期定义名称

kill -USR1 $(cat $pid_path)       #平滑重载Nginx服务

find $logs_path -mtime +30 | xargs rm –rf    #文件最后修改的时间超过30天,直接删除

 

2.执行脚本
[root@localhost logs]# chmod +x /opt/fenge.sh   #添加执行权限

[root@localhost logs]# /opt/fenge.sh                     #执行脚本

 

3.设置计划性任务,定期自动执行日志分割
[root@localhost ~]# crontab –e  

00 0 * * * /opt/fenge.sh           #每天凌晨0点00分执行脚本,进行日志分割

 

4.启动计划性任务

[root@localhost ~]# service crond start 

[root@localhost conf]# crontab -l   #查看计划性任务

00 0 * * * /opt/fenge.sh            #设置成功