nginx深度优化——隐藏版本号、日志分割、缓存处理
发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,内容要点:隐藏版本号网页缓存日志分割隐藏版本号两种配置方法:修改配置文件法修改源码法一、修改配置文件法:[root@localhost init.d]# curl -I http://192.168.
千家信息网最后更新 2024年11月25日nginx深度优化——隐藏版本号、日志分割、缓存处理
内容要点:
隐藏版本号
网页缓存
日志分割
隐藏版本号
两种配置方法:
修改配置文件法
修改源码法
一、修改配置文件法:
[root@localhost init.d]# curl -I http://192.168.13.140/ ##查看Nginx信息HTTP/1.1 200 OKServer: nginx/1.12.2 ##显示版本号Date: Tue, 12 Nov 2019 14:23:24 GMTContent-Type: text/htmlContent-Length: 612Last-Modified: Tue, 12 Nov 2019 13:46:35 GMTConnection: keep-aliveETag: "5dcab7bb-264"Accept-Ranges: bytes[root@localhost init.d]# vim /usr/local/nginx/conf/nginx.conf ##修改配置文件http { ##在http下添加 include mime.types; default_type application/octet-stream; server_tokens off; ##关闭版本号[root@localhost init.d]# service nginx stop ##关闭服务[root@localhost init.d]# service nginx start ##开启服务[root@localhost init.d]# curl -I http://192.168.13.140/ ##查看Nginx信息HTTP/1.1 200 OK Server: nginx ##版本号被隐藏Date: Tue, 12 Nov 2019 14:22:00 GMTContent-Type: text/htmlContent-Length: 612Last-Modified: Tue, 12 Nov 2019 13:46:35 GMTConnection: keep-aliveETag: "5dcab7bb-264"Accept-Ranges: bytes
使用curl -I 命令检测,可以看到版本号
再次使用curl -I 进行查询
二、伪造版本号(需重新编译安装,也可在编译安装之前操作)
[root@localhost ~]# cd /opt/nginx-1.12.1/src/core[root@localhost core]# vim nginx.h 进入配置文件中修改你想展示的版本号[root@localhost core]# cd ../../[root@localhost nginx-1.12.2]# ./configure \ 然后进行重新编译> --prefix=/usr/local/nginx \> --user=nginx \> --group=nginx \> --with-http_stub_status_module
重启nginx服务,查看版本信息
[root@localhost nginx-1.12.2]# service nginx stop ##关闭[root@localhost nginx-1.12.2]# service nginx start ##开启[root@localhost nginx-1.12.2]# curl -I http://192.168.13.140/ ##查看Nginx信息HTTP/1.1 200 OK Server: nginx/1.1.1 ##此时的版本号就是伪造的版本号Date: Tue, 12 Nov 2019 14:34:02 GMTContent-Type: text/htmlContent-Length: 612Last-Modified: Tue, 12 Nov 2019 13:46:35 GMTConnection: keep-aliveETag: "5dcab7bb-264"Accept-Ranges: bytes
网页缓存时间
当Nginx将网页数据返回给客户端后,可设置缓存时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度
一般针对静态网页设置 ,对动态网页不设置缓存时间
可在Windows客户端中使用fiddler查看网页缓存时间
配置方法:
可修改配置文件,在http段,或者server段,或者location段加入对特定内容的过期参数
1、将测试图片复制至nginx网页站点目录下
[root@localhost mnt]# cp test.jpg /usr/local/nginx/html/ ##复制图片到站点中[root@localhost mnt]# cd /usr/local/nginx/html/ ##切换到站点下[root@localhost html]# lstest.jpg 50x.html index.ht
2、修改网页信息,将测试图片添加到index.html文件中
[root@localhost html]# vim index.html ##修改网页信息Welcome to nginx!
##加入图片到网页中
3、修改配置文件信息,添加缓存时间
[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf ##修改配置文件events { worker_connections 1024;} user nginx nginx; ##修改Nginx用户和组 # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~\.(gif|jepg|jpg|ico|bmp|png)$ { ##支持图片格式 root html; ##站点 expires 1d; ##缓存一天 }[root@localhost html]# service nginx stop ##关闭开启服务[root@localhost html]# service nginx start
4、访问网页,使用fiddler查看缓存
nginx的日志分割
随着Nginx运行时间增加,日志也会增加。为了方便掌握Nginx运行状态,需要时刻关注日志文件
太大的日志文件对监控是一个大灾难定期进行日志文件的切割
Nginx自身不具备日志分割处理的功能,但可以通过Nginx信号控制功能的脚本实现日志的自动切割,并通过Linux的计划任务周期性的进行日志切割
1、编写日志分割脚本文件
[root@localhost ~]# vim fenge.sh ##编写脚本文件#!/bin/bash#Filename:fenge.shd=$(date -d "-1 day" "+%Y%m%d") ##显示一天前的时间logs_path="/var/log/nginx" ##分割日志的保存路径pid_path="/usr/local/nginx/logs/nginx.pid" ##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) ##结束重新生成新的pid文件find $logs_path -mtime +30 | xargs rm -rf ##删除30天前的日志文件[root@localhost ~]# chmod +x fenge.sh ##给执行权限[root@localhost ~]# ./fenge.sh ##执行脚本文件
2、查看日志分割情况
[root@localhost ~]# cd /var/log/nginx/ ##切换到Nginx的日志目录下[root@localhost nginx]# lstest.com-access.log-20191112[root@localhost nginx]# date -s 2019-11-14 ##修改日期为明天的时间2019年 11月 14日 星期四 00:00:00 CST[root@localhost nginx]# cd ~[root@localhost ~]# ./fenge.sh ##重新执行脚本[root@localhost ~]# cd /var/log/nginx/[root@localhost nginx]# ls ##查看日志分割日志文件test.com-access.log-20191112 test.com-access.log-20191113
3、设置周期性计划任务,进行定期分割
[root@localhost nginx]# crontab -e ##周期性计划任务0 1 * * * /opt/fenge.sh
更多nginx优化状态统计、访问控制等,进我主页查看
文件
日志
版本
网页
配置
缓存
时间
信息
图片
脚本
目录
服务
任务
内容
周期
周期性
路径
编译
功能
可在
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
ibm服务器电源启动
学网络安全是吃青春饭吗
流媒体服务器 php
数据库依赖关系有哪些方面
习近平在中央网络安全
java 数据库 导出
性价比好的数据库读写分离
lol掉线无法连接服务器
小李老师谈互联网科技
特殊软件开发欢迎咨询
计算机网络技术第三章笔记
软件开发企业成本核算摘要
网络安全可行性报告百度
mysql给用户数据库授权
腾讯云轻量服务器安全组
南昌公司管理系统软件开发
数据库技术是指设计
如何加强用户的网络安全意识
软件开发后期维护费用
网络安全主题书法比赛绍兴
编程软件开发cad
作为一个好的软件开发人员
松江区通讯网络技术产品
数据库转义
数据库技术实例
mediline是什么数据库
中国联通网络技术研究院马泽芳
网络安全爆破工程师培训
国际服如何登录中国服务器
万方数据库可以获取哪些信息