在 Debian 上用 Nginx 防盗链,最常用、最有效的方式是使用 ngx_http_referer_module(基于 Referer 判断)。下面按常见场景给你一套实用配置。
sudo nano /etc/nginx/sites-available/your_site
server 或 location 中加入location ~* \.(jpg|jpeg|png|gif|webp|mp4|avi|mov)$ {
valid_referers none blocked server_names
*.yourdomain.com
yourdomain.com;
if ($invalid_referer) {
return 403;
# 或者返回一张提示图
# rewrite ^/.*\.(jpg|png)$ /anti-hotlink.png last;
}
}
sudo nginx -t
sudo systemctl reload nginx
valid_referers none blocked server_names ...
| 参数 | 含义 |
|---|---|
none |
允许无 Referer(浏览器直链、APP) |
blocked |
Referer 被防火墙/代理隐藏 |
server_names |
允许本站域名 |
*.yourdomain.com |
允许子域名 |
❌ 不推荐:完全禁用 none,否则微信/APP 无法访问。
valid_referers https://yourdomain.com https://*.yourdomain.com;
valid_referers server_names;
if ($invalid_referer) {
return 403;
}
valid_referers server_names
*.baidu.com
*.google.com;
if ($invalid_referer) {
rewrite ^/.*\.(jpg|png|gif)$ /hotlink.png last;
}
/video.mp4?token=xxx&expire=1700000000limit_rate 100k;
curl -I -e "http://bad.com" http://yourdomain.com/test.jpg
# 应返回 403
如果你愿意,可以告诉我:
我可以直接给你可复制的最终配置。