如何通过nginx配置防盗链
作者:RainLight
时间:2026-06-28
浏览:0
Nginx通过验证HTTP请求头Referer字段实现防盗链。在server块的location中匹配图片、CSS、JS等资源,用valid_referers定义合法来源,非法来源返回403。该方法简单但Referer可伪造,适用于一般场景。
说到防盗链,Nginx这边其实就是通过检查HTTP请求头里的Referer字段来判断的。简单来说,如果请求的来源不是你允许的域名,那就直接拒绝访问。怎么配?可以参考下面这个例子。

第一步,找到你的Nginx配置文件。一般来说,它在/etc/nginx/nginx.conf或者/etc/nginx/sites-a vailable/yourdomain.com这个路径下。
第二步,在server块里加上这么一段配置:
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
valid_referers none blocked yourdomain.com *.yourdomain.com;
if ($invalid_referer) {
return 403;
}
}
来拆解一下这段配置的意思:
location ~* .(jpg|jpeg|png|gif|ico|css|js)$—— 这个匹配规则,意思是拦截所有以.jpg、.jpeg、.png、.gif、.ico、.css、.js结尾的文件请求。valid_referers none blocked yourdomain.com *.yourdomain.com;—— 这行是用来定义哪些来源是合法的。none意思是直接访问(没有Referer头)不算;blocked是允许Nginx自身拦截掉的来源(比如来自某些广告平台的引用);后面yourdomain.com和*.yourdomain.com就是你的域名和所有子域名,只有它们来的请求才放行。if ($invalid_referer) { return 403; }—— 如果来源不合法,就直接返回403 Forbidden,也就是“禁止访问”。
第三步,保存配置,退出编辑器,然后跑一下下面的命令:
sudo nginx -t
# 检查配置文件语法是否正确
sudo nginx -s reload
# 重新加载配置文件
现在,Nginx就会按这个规则来检查每一个请求了。如果来源不对,直接返回403。
不过话说回来,这种办法虽然简单,但别高兴太早——它其实有点“裸露”。因为Referer头在客户端是可以伪造的,稍微懂点技术的人就能绕过。它对付一般的盗链行为足够,但真遇到恶意抓取,还是得补上更硬核的手段,比如签名URL或者其他验证机制。这其实就是基于Referer的基本防盗链手段,理解原理,后面再升级就容易多了。
作者最新文章
傲梅轻松备份
2026-09-16 17:40
photoshop路径工具在哪 怎么用
2026-09-16 13:46
PDF怎么批量添加页码?页码位置和起始页怎么设置?
2026-09-04 14:03
GitLab新手创建项目并推送第一次提交的操作指南
2026-09-03 06:05
PDF怎么编辑修改内容?4招处理方法整理
2026-09-02 18:44
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































