nginx通过valid_referers指令校验referer防盗链,精准匹配视频路径(如location ~* .(mp4|webm|mov|avi|mkv|flv|ogg)$),配置白名单(none、blocked、yourdomain.com等),拦截后可返回403、跳转提示页或替换为提示视频,但referer易伪造,需配合secure_link等增强防护。

直接拦截第三方网站盗用视频资源,核心是利用 Nginx 的 valid_referers 指令校验请求来源,并对非法 Referer 返回明确响应。这不是万能方案,但对绝大多数普通盗链行为有效。
精准匹配视频文件路径
避免全局限制,只针对视频资源生效。用正则 location 匹配常见后缀,确保不误伤 API 或页面逻辑:
location ~* \.(mp4|webm|mov|avi|mkv|flv|ogg)$- 若视频统一放在
/videos/路径下,也可写成location /videos/,更简洁可控 - 务必确认该 location 内的
root或alias指向正确物理路径,否则 rewrite 或 return 会失败
设置合法 Referer 白名单
valid_referers 是判断依据,需覆盖真实访问场景:
- none:允许用户直接在浏览器地址栏输入视频 URL 访问(如分享链接)
- blocked:兼容被隐私插件、企业代理或某些浏览器清除 Referer 的情况
-
yourdomain.com 和 *.yourdomain.com:主站及所有子域名(如
www、app、video) - 如需授权合作方,可加
partner-site.com *.partner-site.com
拦截后返回合理响应
单纯返回 403 容易暴露防护逻辑,建议按需选择更友好的处理方式:
- 返回固定提示视频:
if ($invalid_referer) { rewrite ^/.*$ /static/hotlink-denied.mp4 break; } - 跳转到自定义提示页:
if ($invalid_referer) { return 302 https://yourdomain.com/hotlink.html; } - 直接拒绝(最常用):
if ($invalid_referer) { return 403; }
注意事项与局限提醒
Referer 防盗链本质是“防君子不防小人”:
- Referer 字段极易被伪造,curl、Postman 或浏览器插件都可绕过
- HTTPS 页面引用 HTTP 资源时,浏览器可能不发送 Referer,导致误拦截
- 移动端 WebView、PWA 或某些嵌入式播放器也可能缺失或修改 Referer
- 高价值视频建议叠加
secure_link签名 URL 或短期 Token 验证,提升门槛











