valid_referers实现Referer白名单防盗链需三步:设定允许来源、配合if拦截非法请求、返回自定义图或403;它仅校验Referer头,不加密不鉴权,轻量有效但可被伪造。

直接用 valid_referers 做 Referer 白名单防盗链,核心就三步:明确允许哪些来源、拦截非法请求、返回合适响应。它不加密、不验证用户身份,只检查 HTTP 请求头里的 Referer 字段是否在预设范围内,轻量但有效。
一、理解 valid_referers 的匹配逻辑
该指令本身不拦截请求,只设置内置变量 $invalid_referer(值为 1 表示不合法,0 表示合法)。后续需配合 if 判断使用。支持多种匹配方式:
-
精确域名:如
www.example.com,仅匹配该完整域名(不含协议和路径) -
带通配符:如
*.example.com,匹配所有子域;example.*匹配example.org、example.net -
正则表达式:以
~开头,如~\.google\.匹配含 google 子字符串的域名(注意转义点号) -
空 Referer:用
none显式允许无 Referer 的请求(例如直接输入 URL 或 HTTPS 页面引用 HTTP 资源时可能被浏览器清空) -
阻止所有:仅写
none不加其他值,相当于全站禁止外链(慎用)
二、典型防盗链配置写法
以下配置放在 server 或 location 块中,针对图片、视频等静态资源:
location ~* \.(jpg|jpeg|png|gif|webp|mp4|avi|flv)$ {
valid_referers none blocked www.example.com *.example.com ~\.baidu\.com$ ~\.google\.com$;
<pre class="brush:php;toolbar:false;">if ($invalid_referer) {
# 返回自定义提示图(需提前准备)
rewrite ^/.*$ /images/forbidden.png break;
# 或直接返回 403
# return 403;
}}
说明:
-
blocked表示 Referer 存在但无法解析(如被浏览器过滤、含非法字符),也视为非法 - 正则末尾加
$是为了精确匹配域名结尾,避免误放example.com.hacker.site -
rewrite ... break是内部重定向,不改变浏览器地址栏;若用redirect会暴露真实图片路径,不推荐
三、常见坑与应对建议
Referer 防盗链天然有局限,实际使用要注意:
-
HTTPS 页面引用 HTTP 资源会被浏览器清空 Referer:若你站点已切 HTTPS,但资源仍走 HTTP,外部 HTTPS 站点引用时 Referer 为空 → 必须加
none,否则自己页面也无法加载 -
移动端 App 或微信内嵌页通常不带 Referer:若 App 直接访问你的图片链接,
$invalid_referer为 1 → 若需支持,可结合 UA 判断或改用 Token 鉴权 - Referer 可被伪造:curl、Postman 或简单脚本都能随意设置 Referer → 它只防小白搬运,不防恶意爬虫;高安全场景应配合签名 URL 或登录态校验
-
配置后务必测试:用 curl 模拟不同 Referer:
curl -H "Referer: https://www.baidu.com" https://yoursite.com/test.jpg,观察响应是否符合预期
四、进阶:按目录或文件类型差异化控制
不是所有资源都要严格防盗链。比如公开 banner 图可以放开,后台导出的 Excel 报表则必须限制:
# 公开资源目录,允许任意 Referer
location /public-assets/ {
# 不做 valid_referers 限制
}
<h1>敏感资源目录,仅限内部域名</h1><p>location /reports/ {
valid_referers none www.example.com admin.example.com;
if ($invalid_referer) {
return 403;
}
}</p><h1>针对特定后缀加强防护(如 .zip、.pdf)</h1><p>location ~* .(zip|pdf|docx?)$ {
valid_referers none www.example.com;
if ($invalid_referer) {
return 403;
}
}这样既保证灵活性,又避免“一刀切”影响正常访问。
valid_referers 是 Nginx 防盗链最常用也最易上手的方式,关键在理清允许范围、匹配方式和响应策略。它不能替代权限系统,但作为第一道轻量防线,配置得当就能挡住大部分资源盗用。


















