目录
Nginx 优化
1. 隐藏版本号
(1) 原因
为了安全,如果暴露版本信息,黑客可以通过版本信息得知该版本存在的漏洞,进而对服务器进行攻击。隐藏版本信息可以避免黑客有的放矢的进行破坏。
(2) 版本号查看
[root@c7-1 ~]#nginx -v
nginx version: nginx/1.12.2
② curl -I
[root@c7-1 ~]#curl -I 127.0.0.1
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Fri, 08 Oct 2021 12:29:08 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Mon, 04 Oct 2021 12:54:14 GMT
Connection: keep-alive
ETag: "615af976-264"
Accept-Ranges: bytes
(3) 隐藏方法
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http {
......
server_tokens off; #添加此行内容,关闭版本号的显示
......
[root@localhost ~]# systemctl restart nginx
② 修改源码文件,重新编译
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http {
......
#server_tokens off; #注释此行内容,开启版本号的显示
......
[root@localhost ~]# vim /opt/nginx-1.12.2/src/core/nginx.h
##修改版本号和名称,可伪装成其他服务(例如 apache、mysql 等)
#define NGINX_VERSION "5.7.20"
#define NGINX_VER "mysql/" NGINX_VERSION
#重新编译
cd /opt/nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
make -j 4 && make install
systemctl restart nginx
2. 修改用户与组
[root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf
user nginx nginx; #第二行,取消注释,修改用户为nginx,组为nginx
[root@localhost nginx-1.12.0]# systemctl restart nginx
[root@localhost nginx-1.12.0]# ps aux | grep nginx
#主进程由root创建,子进程由nginx创建
root 42095 0.0 0.0 20500 628 ? Ss 23:29 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 42096 0.0 0.0 22948 1404 ? S 23:29 0:00 nginx: worker process
root 42103 0.0 0.0 112676 976 pts/0 R+ 23:29 0:00 grep --color=auto nginx
3. 缓存时间
[root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf
......
server {
......
location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ { #新建location,以图片作为缓存对象
root html;
expires 1d; #指定缓存时间为1天,一天半为1d12h
}
......
}
......
[root@localhost nginx-1.12.0]# systemctl restart nginx
[root@c7-1 /usr/local/nginx/html]#ls
50x.html index.html index.html.bak test.jpg
[root@c7-1 /usr/local/nginx/html]#vim index.html
#加入图片
</h1>
<img src="test.jpg"/>
</body></html>
4. 日志分割
[root@c7-1 /opt]# vim log_cut.sh
#!/bin/bash
#Filename:log_cut.sh
lastday=$(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-$lastday
mv /usr/local/nginx/logs/error.log $logs_path/test.com_error.log-$lastday
#移动并重命名日志文件
kill -USR1 $(cat $pid_path)
#重建新日志文件
find $logs_path -mtime +30 -exec rm -rf {} \;
#删除30天之前的日志文件
5. 连接超时
[root@c7-1 ~]#vim /usr/local/nginx/conf/nginx.conf
http {
......
keepalive_timeout 65 180;
client_header_timeout 80;
client_body_timeout 80;
......
}
[root@localhost nginx]# systemctl restart nginx
6. 配置网页压缩
vim /usr/local/nginx/conf/nginx.conf
......
http {
......
gzip on; #开启 gzip 压缩功能
gzip_min_length 1k; #压缩阈值,最小压缩为 1k
gzip_buffers 4 16k; # buffer 大小为 4 个 16k 缓冲区大小
gzip_http_version 1.1; #压缩版本(默认不设置)
gzip_comp_level 6; #压缩比率,最小为 1,处理速度快,传输速度慢,9 最大压缩比,处理速度慢,传输速度快(建议5-6)
gzip_disable "MSIE [1-6]\."; #配置禁用 gzip 条件,支持正则,表示 ie6 以下不启用 gzip
gzip_vary on; #支持前端缓存服务器存储压缩页面
gzip_types text/plain application/x-javascript text/css image/jpg image/jpeg image/png image/gif application/xml text/javascript application/x-httpd-php application/javascript application/json;
#支持的压缩类型
......
}
nginx -t
cd /usr/local/nginx/html/ #首页中插入 cat.jpg 图片进行测试
vim index.html
<h1>Welcome to nginx!</h1>
<img src="test.jpg"/> #插入一行
systemctl restart nginx