提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、隐藏版本号
-
- [1.1 查看当前版本号](#1.1 查看当前版本号)
- [1.2 方法一:修改配置文件](#1.2 方法一:修改配置文件)
- [1.3 方法二:修改源码并重编译](#1.3 方法二:修改源码并重编译)
- 二、修改用户与组
-
- [2.1 配置用户与组](#2.1 配置用户与组)
- 三、缓存时间设置
-
- [3.1 配置缓存时间](#3.1 配置缓存时间)
- 四、日志切割
-
- [4.1 日志切割脚本](#4.1 日志切割脚本)
- 五、连接超时设置
-
- [5.1 配置连接超时参数](#5.1 配置连接超时参数)
- 六、更改进程数
-
- [6.1 优化进程数与 CPU 亲和性](#6.1 优化进程数与 CPU 亲和性)
- 七、配置网页压缩
-
- [7.1 启用 Gzip 压缩](#7.1 启用 Gzip 压缩)
- 八、配置防盗链
-
- [8.1 防盗链配置示例](#8.1 防盗链配置示例)
- [8.2 测试准备](#8.2 测试准备)
- 九、总结
- 总结
前言
Nginx 作为高性能的 HTTP 服务器与反向代理服务器,是支撑各类 Web 服务的核心基础设施,其配置的合理性直接决定服务的运行效率、资源成本与安全性。在生产环境中,仅依赖默认配置无法满足业务需求:高并发场景下易出现响应延迟、资源耗尽等问题,而静态资源(图片、视频、CSS/JS 等)又面临被外部网站非法盗用的风险,不仅造成带宽浪费,还会挤占服务器资源、影响合法用户体验。因此,针对 Nginx 开展性能优化与防盗链配置,是兼顾 "服务效率" 与 "资源保护" 的核心举措 ------ 性能优化旨在最大化服务器硬件潜力,提升并发承载能力、降低响应延迟;防盗链配置则通过精准的访问控制,阻断资源盗用、减少无效损耗,两者协同发力,才能实现 Web 服务 "高效、稳定、低成本、高安全" 的运行目标。
一、隐藏版本号
防止攻击者利用特定版本的已知漏洞进行攻击

1.1 查看当前版本号
css
curl -I http://192.168.10.123

1.2 方法一:修改配置文件
css
vim /usr/local/nginx/conf/nginx.conf

1.3 方法二:修改源码并重编译
css
vim /opt/nginx-1.20.2/src/core/nginx.h

重新配置并编译:
css
cd /opt/nginx-1.20.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module
make
手动替换二进制文件:

二、修改用户与组
2.1 配置用户与组


三、缓存时间设置
3.1 配置缓存时间

四、日志切割
优化日志分割策略,便于日常分析和文件大小管理,防止日志文件过大。
4.1 日志切割脚本


五、连接超时设置
keepalive_timeout 65 180; # 保持连接的超时时间,空闲连接65秒后关闭,建议客户端超时180秒
client_header_timeout 80; # 客户端发送请求头超时时间
client_body_timeout 80; # 客户端发送请求体超时时间
5.1 配置连接超时参数

六、更改进程数

6.1 优化进程数与 CPU 亲和性
七、配置网页压缩
7.1 启用 Gzip 压缩
css
vim /usr/local/nginx/conf/nginx.conf
http {
......
gzip on; #取消注释,开启gzip压缩功能
gzip_min_length 1k; #最小压缩文件大小
gzip_buffers 4 64k; #压缩缓冲区,大小为4个64k缓冲区
gzip_http_version 1.1; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_comp_level 6; #压缩比率 1:压缩比最小,速度最快;9:压缩比最大,传输速度最快,但处理也最慢,也比较的消耗CPU资源
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; #压缩类型,表示哪些网页文档启用压缩功能
......
}
css
cd /usr/local/nginx/html
先将game.jpg文件传到/usr/local/nginx/html目录下
vim index.html
......
<html>
<body>
<img src="game.jpg"/> #网页中插入图片
</body>
</html>
八、配置防盗链
8.1 防盗链配置示例
css
vim /usr/local/nginx/conf/nginx.conf
http {
......
server {
......
location ~* \.(jpg|gif|swf)$ {
valid_referers none blocked *.yjs.com yjs.com;
if ( $invalid_referer ) {
# 将请求路径为 ^/(^/会匹配 所有请求路径)的URL重定向到 http://www.yjs.com/error.png
rewrite ^/ http://www.yjs.com/error.png;
#return 403;
}
}
......
}
}
8.2 测试准备
css
cd /usr/local/nginx/html
将game.jpg、error.png文件传到/usr/local/nginx/html目录下
vim index.html
<html>
<body>
<img src="game.jpg"/>
</body>
</html>
echo "192.168.10.110 www.yjs.com" >> /etc/hosts
echo "192.168.10.123 www.simoncwh.com" >> /etc/hosts
css
cd /usr/local/nginx/html
vim index.html
......
<html>
<body>
<img src="http://www.yjs.com/game.jpg"/>
</body>
</html>
echo "192.168.10.110 www.yjs.com" >> /etc/hosts
echo "192.168.10.123 www.simoncwh.com" >> /etc/hosts
九、总结
~* .(jpg|gif|swf)$:匹配不区分大小写,以.jpg、.gif或.swf结尾的文件
valid_referers:配置可信来源网站,允许其正常访问图片资源
访问控制规则:
none:允许不带Referer字段的请求
blocked:允许非http://开头的,不带协议的请求访问资源
*.yjs.com:仅允许来自该域及其子域的请求
优先级: = (精确匹配) > ^~ (前缀匹配) > ~ / ~* (正则匹配) > / (默认匹配)
用途:
精确匹配适用于需要精确控制的路径(如首页)。
前缀匹配用于处理路径较长的请求,特别是静态资源。
正则匹配用于更复杂的模式匹配,如文件类型(图片、CSS 文件等)。
规则顺序:在配置时,确保合理排列 location 规则,确保静态资源和动态请求的正确处理。
总结
Nginx 性能优化与防盗链配置是生产环境部署的两大核心优化方向,二者相辅相成、缺一不可。性能优化围绕 "提升服务能力" 展开,通过调整进程数、连接数、缓存策略、数据压缩等手段,充分释放服务器硬件潜力,有效提升并发处理能力、降低响应延迟,同时减少 CPU、内存、带宽等资源消耗,保障高流量场景下服务的稳定性与用户体验;防盗链配置则聚焦 "保护资源不被滥用",通过校验请求来源(Referer 字段、Token 等),仅允许合法域名访问静态资源,从源头阻断外部盗用行为,既节省了带宽成本、保护了资源版权,又避免无效请求挤占优化后的服务器资源,让性能优化的效果充分落地。