用Nginx打造防盗链护盾
- 其他
- 2025-08-22 11:45:01

用Nginx打造防盗链护盾 一、你的网站正在"为他人做嫁衣"?
想象一下这个场景: 你精心拍摄的摄影作品、录制的课程视频、设计的原创素材,被其他网站直接盗用链接。 更气人的是——当用户在他们网站查看这些资源时,消耗的却是你的服务器流量!
🛑 这就像你花钱买的零食,却被邻居家小孩随便拿去招待客人!
二、防盗链背后的"侦察兵"——$http_referer 1. 这个变量为什么叫错别字?
Nginx内置变量$http_referer(注意是referer不是referrer)就像网络世界的"邀请函":
当用户通过A网站点击链接访问你的资源时浏览器会自动在请求头里带上Referer: A网站的地址Nginx通过这个变量就能知道请求是从哪来的 2. 为什么不能完全依赖它? 可以被伪造(就像假身份证)隐私模式下访问时不会携带直接输入地址访问时值为空三、三步搭建防盗链系统 步骤1:基础防护——白名单机制 location ~* \.(jpg|png|mp4)$ { valid_referers none blocked *.yourdomain ~.google. ~.baidu.; if ($invalid_referer) { return 403; # 或者替换成提示图片 # rewrite ^ /static/anti-leech.jpg; } }
配置解读:
none:允许直接访问(地址栏输入)blocked:允许去掉http://前缀的访问*.yourdomain :主站及其子域名~.google.:允许来自Google的搜索引擎流量(正则匹配) 步骤2:高级技巧——动态防盗链 location /assets/ { # 生成加密签名(示例逻辑) set $secret_key "your_private_key"; set_hmac_sha1 $signature $secret_key $uri; # 验证URL中的签名参数 if ($arg_sign != $signature) { return 403; } }访问合法URL示例: /assets/cat.jpg?sign=7d8f9e0a1b2c3d4e5f(签名需后端生成)
四、你可能遇到的灵魂拷问 Q1:为什么我配置后自己网站也显示不了?
✅ 检查清单:
白名单是否包含自己域名是否漏掉了blocked和none测试时是否使用了隐身模式(无referer)💡 小贴士:防盗链就像给自家花园装上围栏—— 既不能让邻居随便摘花,也要给真正的客人留好入口。 定期检查日志,保持策略更新,才能让盗链者无机可乘!
动手时间:现在就打开你的Nginx配置,试试这些技巧吧!遇到问题欢迎在评论区讨论~
用Nginx打造防盗链护盾由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“用Nginx打造防盗链护盾”
下一篇
【分布式系统】幂等性