Nginx 优化与防盗链配置指南
1. 隐藏版本号
操作方法:
1.1修改配置文件方式:
# 编辑nginx配置文件 vim /usr/local/nginx/conf/nginx.conf# 在http块中添加 http {server_tokens off; # 关闭版本号显示... }
1.2修改源码方式:
# 修改nginx.h文件 vim /opt/nginx-1.12.0/src/core/nginx.h #define NGINX_VERSION "1.1.1" # 修改版本号 #define NGINX_VER "IIS" NGINX_VERSION # 修改服务器类型# 重新编译安装 cd /opt/nginx-1.12.0/ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module make && make install
验证方法:
systemctl restart nginx curl -I http://192.168.88.200
2. 修改用户与组
操作方法:
# 编辑nginx配置文件 vim /usr/local/nginx/conf/nginx.conf# 修改用户和组 user nginx nginx; # 取消注释并修改
验证方法:
systemctl restart nginx ps aux | grep nginx # 主进程由root创建,子进程由nginx创建
3. 缓存时间设置
操作方法:
# 编辑nginx配置文件 vim /usr/local/nginx/conf/nginx.conf# 添加图片缓存设置 location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {root html;expires 1d; # 设置缓存时间为1天 }
验证方法:
systemctl restart nginx # 浏览器访问测试,查看响应头中的Cache-Control:max-age=86400
4. 日志切割
操作方法:
# 创建日志切割脚本 vim /opt/fenge.sh#!/bin/bash day=$(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}/kgc.com-access.log-$day kill -USR1 $(cat $pid_path) find $logs_path -mtime +30 -exec rm -rf {} \;# 设置定时任务 chmod +x /opt/fenge.sh crontab -e 0 1 * * * /opt/fenge.sh
5. 连接超时设置
操作方法:
# 编辑nginx配置文件 vim /usr/local/nginx/conf/nginx.confhttp {keepalive_timeout 65 180; # 三次握手的超时时间client_header_timeout 80; # 等待客户端发送请求头的超时时间client_body_timeout 80; # 设置客户端发送请求体的超时时间... }
6. 更改进程数
操作方法:
# 编辑nginx配置文件 vim /usr/local/nginx/conf/nginx.conf# 根据CPU核数设置工作进程数 worker_processes 2; # 修改为核数相同或者2倍 worker_cpu_affinity 01 10; # 设置CPU亲和性
检查方法:
cat /proc/cpuinfo | grep -c "physical id" # 查看CPU核数 ps aux | grep nginx # 查看nginx进程数
7. 配置网页压缩
操作方法:
# 编辑nginx配置文件 vim /usr/local/nginx/conf/nginx.confhttp {gzip on; # 开启gzip压缩gzip_min_length 1k; # 最小压缩文件大小gzip_buffers 4 64k; # 压缩缓冲区gzip_http_version 1.1; # 压缩版本gzip_comp_level 6; # 压缩比率(1-9)gzip_vary on; # 支持前端缓存gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;... }
验证方法:
systemctl restart nginx # 浏览器查看响应头中是否包含Content-Encoding: gzip
8. 配置防盗链
操作方法:
# 编辑nginx配置文件 vim /usr/local/nginx/conf/nginx.confserver {location ~* \.(jpg|gif|swf)$ {valid_referers none blocked *.kgc.com kgc.com;if ($invalid_referer) {rewrite ^/ http://www.kgc.com/error.png;# return 403;}}... }
配置说明:
~* \.(jpg|gif|swf)$
:匹配不区分大小写的图片文件valid_referers
:设置信任的网站none
:允许没有Referer字段的请求blocked
:允许不带协议的请求*.kgc.com
:只允许来自指定域名的请求
主机配置:
# 源主机(192.168.10.23)配置 echo "192.168.10.23 www.kgc.com" >> /etc/hosts# 盗链主机(192.168.10.80)配置 echo "192.168.10.23 www.kgc.com" >> /etc/hosts echo "192.168.10.80 www.benet.com" >> /etc/hosts