最快速可靠的测试方式是用 curl -e 模拟不同 Referer 场景:合法来源应返回200,空Referer通常放行,非法域名应返回403或重定向,再结合access.log中Referer字段与状态码验证拦截是否生效。

直接用 curl -e 模拟非法 Referer 请求,是最快速、最可靠的测试方式。不需要搭建真实盗链站,几条命令就能验证规则是否生效。
用 curl 模拟不同 Referer 场景
在 Nginx 服务器本机或任意可连通的 Linux 终端执行:
-
模拟合法访问(应成功):
curl -e "https://yourdomain.com" http://yourdomain.com/img/test.jpg -
模拟空 Referer(通常允许):
curl -e "" http://yourdomain.com/img/test.jpg -
模拟被屏蔽的盗链域名(应失败):
curl -e "https://bad-site.com" http://yourdomain.com/img/test.jpg -
模拟百度来源(若配置了 ~\.baidu\.,应成功):
curl -e "https://www.baidu.com/s?wd=test" http://yourdomain.com/img/test.jpg
观察返回结果判断是否拦截成功
重点看 HTTP 状态码和响应内容:
- 返回
200+ 图片二进制数据 → 规则未生效或 Referer 被误判为合法 - 返回
403或404→ 拦截成功(取决于你用的是return 403还是return 404) - 返回
302+ 重定向到提示图地址 → 若用了rewrite方案,需再用curl -I确认跳转是否正确
配合 Nginx 访问日志交叉验证
打开 Nginx 的 access log(如 /var/log/nginx/access.log),执行一次盗链测试后,立即查最新日志行:
tail -n 5 /var/log/nginx/access.log
找类似这一行:
192.168.1.100 - - [08/Oct/2026:20:50:12 +0800] "GET /img/test.jpg HTTP/1.1" 403 153 "https://bad-site.com" "curl/8.10.1"
其中 "https://bad-site.com" 是伪造的 Referer,403 表示拦截已触发,且日志中明确记录了非法来源 —— 这是最真实的生效证据。
补充:浏览器端简易验证(辅助用)
若已有简单 HTML 页面(比如本地写个 test.html),里面放:
用浏览器打开该页面(注意 URL 是 file:// 或 http://localhost,非你的域名),此时 Referer 为空或不匹配,也能触发拦截。但注意:现代浏览器对 file:// 页面的 Referer 处理较特殊,优先以 curl -e 为准。











