«

Nginx 防盗链 Referer 配置实战

时间:2026-11-15 07:17     作者:emer     分类: 无


Nginx 防盗链 Referer 配置实战

一、什么是盗链

别的网站直接把你服务器上的图片、视频地址写进自己页面,访客访问他的网站时,流量和带宽却从你的服务器流出。图片、视频、安装包这类大资源最容易被白嫖。防盗链就是校验请求来源 Referer,只允许自己的域名引用这些资源。

二、Referer 是什么

浏览器从一个页面跳到资源请求时,会在请求头带上 Referer,记录来源页面地址。Nginx 用 valid_referers 校验它是否在白名单内,不在就拒绝。注意 Referer 可被伪造或缺失,它是低成本防护,不是强安全方案。

三、基础配置

location ~* \.(jpg|jpeg|png|gif|mp4|zip|rar)$ {
    valid_referers none blocked server_names
                   *.0454.wang 0454.wang;
    if ($invalid_referer) {
        return 403;
    }
}

四、返回占位图而非 403

直接 403 图片裂着不友好,可以重定向到一张提示图:

if ($invalid_referer) {
    rewrite ^/images/(.*)$ /static/no-hotlink.png redirect;
}

五、区分静态与动态

防盗链一般只加在资源目录,别整站限制,否则搜索引擎、直接访问、接口调用会被误伤:

location /images/ {
    valid_referers none blocked *.0454.wang;
    if ($invalid_referer) { return 403; }
}

六、配合 deny 与 CDN

七、验证配置

# 模拟合法来源
curl -I -H "Referer: https://www.0454.wang/a.html" https://0454.wang/img/a.jpg

# 模拟盗链来源,应返回 403
curl -I -H "Referer: https://evil.com/b.html" https://0454.wang/img/a.jpg

改完执行 nginx -t && nginx -s reload 重载生效。

八、常见误区

  1. 把 none 去掉,导致直接访问图片全部 403;
  2. 整站 location 都加防盗链,误伤页面和接口;
  3. 只配 Referer 就当绝对安全,忽略了它可伪造;
  4. HTTPS 转 HTTP 场景浏览器不带 Referer,白名单需兼容;
  5. 改完不 nginx -t 直接 reload,语法错误导致服务中断。

九、总结

Nginx 防盗链靠 valid_referers 校验来源白名单,对图片视频等大资源限制外部引用,配合占位图、目录限定和 CDN 白名单使用。它能挡住大部分普通盗链,但要明白 Referer 可伪造,高价值资源应再叠加签名 URL 或鉴权,改配置前务必先 nginx -t 校验。

标签: Nginx 防盗链 Web安全 referer