实验目的
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 #编辑源码文件
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.用抓包图片缓存信息
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运行时间的增加,产生日志也会增加。而太大的日志文件对监控是一个大灾难,非常不方便分析排查,因此需要定期进行日志文件切割
三、日志分割
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 #设置成功