云计算大数据——Nginx 实战系列(性能优化与防盗链配置)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

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 等),仅允许合法域名访问静态资源,从源头阻断外部盗用行为,既节省了带宽成本、保护了资源版权,又避免无效请求挤占优化后的服务器资源,让性能优化的效果充分落地。

相关推荐
toooooop82 小时前
CentOS 7 系统上安装 **Nginx + MySQL 5.7 + PHP 7.3 + Redis** 的完整步骤
redis·mysql·nginx·centos·php7
周全全2 小时前
基于ElasticSearch的语义检索学习-向量化数据、向量化相似度、向量化检索
大数据·学习·elasticsearch
可涵不会debug3 小时前
时序数据库选型指南:大数据时代下Apache IoTDB的崛起之路
大数据·apache·时序数据库
WLJT1231231234 小时前
藏在细节里的生活答案
大数据·生活
TDengine (老段)4 小时前
TDengine 日期函数 DATE 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
q***65694 小时前
PostgreSQL 中进行数据导入和导出
大数据·数据库·postgresql
天翼云开发者社区4 小时前
正式发布CTyunOS V4.0!
云计算·ctyunos v4.0
k***45995 小时前
服务器无故nginx异常关闭之kauditd0 kswapd0挖矿病毒 CPU占用200% 内存耗尽
运维·服务器·nginx
记得记得就1515 小时前
【Nginx 实战系列(一)—— Web 核心概念、HTTP/HTTPS协议 与 Nginx 安装】
前端·nginx·http