必须采用IP黑白名单+Referer校验+secure_link三层防护阻断关键静态资源盗链,精准定位/images/products/等路径,用^~高效匹配,deny/allow控制源头,valid_referers兼顾空Referer,高敏感资源强制签名URL,统一返回占位图并记录日志。

要防止特定 IP 对关键静态资源盗链,不能只靠单一 Referer 限制——因为盗链者可伪造 Referer。必须结合 IP 黑白名单 + Referer 校验 + 安全令牌(secure_link)三层防护,才能真正阻断恶意行为。
精准定位关键静态资源路径
先明确哪些资源属于“关键”:如商品图 /images/products/、后台 JS /admin/js/、私有文档 /docs/private/ 等。用 ^~ 前缀 location 高效匹配,避免正则开销:
- location ^~ /images/products/ { alias /data/images/products/; }
- location ^~ /admin/js/ { root /var/www/app; }
- 不在此类 location 中写 proxy_pass,确保走本地文件服务
叠加 IP 黑白名单控制访问源头
在对应 location 内直接嵌入 deny/allow 规则,优先拦截已知恶意 IP:
- deny 203.0.113.88; # 单个扫描 IP
- deny 198.51.100.0/24; # 恶意网段
- allow 172.16.0.0/12; # 允许内网运维访问
- allow 203.0.113.42; # 白名单 CDN 回源 IP
- allow all; # 必须收尾,否则全部拒绝
强制 Referer 白名单 + 空 Referer 兼容
盗链常伪造 Referer,但配合 IP 限制后,Referer 校验仍有价值,尤其防批量爬虫:
- valid_referers none blocked yoursite.com *.yoursite.com admin.yoursite.com;
- if ($invalid_referer) { return 403; }
- “none”保留直接访问和小程序场景,“blocked”兼容隐私模式或代理屏蔽 Referer 的合法请求
对高敏感资源启用 secure_link 签名令牌
图片、PDF、Excel 等可下载资源,必须用一次性签名 URL,彻底杜绝盗链可能:
- location ^~ /docs/private/ {
- secure_link $arg_md5,$arg_expires;
- secure_link_md5 “secret_key$uri$arg_expires”; # 与后端生成逻辑一致
- if ($secure_link = “”) { return 403; }
- if ($secure_link = “0”) { return 410; } # 过期
- alias /data/docs/;
- }
生成 URL 示例:https://yoursite.com/docs/private/report.pdf?md5=abc123&expires=1720512000
兜底与日志协同
所有拦截动作统一记录并返回友好占位图,避免暴露路径结构:
- 对非法请求返回 /images/hotlink-denied.png(需提前配置 alias)
- 添加自定义日志格式,标记盗链来源:
log_format hotlink '$remote_addr $http_referer $request_uri $status'; - 定期从日志提取高频盗链 IP,追加进 deny 列表


















