You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NGINX中禁止指定恶意域名盗链本站脚本及静态文件

Nginx 拦截指定域名静态资源盗链配置

针对禁止指定域名调用本站gif、otf、jpg、jpeg、png、css、js类静态资源的需求,提供两种常用配置方案,按需选择即可。

方案1:白名单模式(推荐,防盗链更彻底)

仅允许本站域名发起的资源请求,所有外部域名(包含你要拦截的domain1.com、domain2.com、domain3.com)的盗链请求全部拦截,配置如下:

# 匹配需要做防盗链校验的静态资源后缀
location ~* \.(gif|otf|jpg|jpeg|png|css|js)$ {
    # 配置允许访问的来源,把下面的your-domain.com替换成你自己的站点域名,多个域名用空格分隔
    valid_referers none blocked server_names *.your-domain.com your-domain.com;
    # 来源不在白名单内时直接返回403
    if ($invalid_referer) {
        return 403;
        # 也可以替换成返回自定义防盗链提示图,比如 return 200 /anti-leech.png; 注意提示图本身不要放在这个location规则匹配的后缀范围内,避免死循环
    }

    # 下方保留你原有的静态资源处理逻辑,比如root路径、缓存头配置等
    # 示例:
    # root /var/www/your-site;
    # expires 7d;
    # add_header Cache-Control "public, no-transform";
}

方案2:黑名单模式(仅拦截指定域名,其余来源正常放行)

如果你只需要禁止domain1.com、domain2.com、domain3.com这几个域名的盗链,其余外部来源的请求不做限制,用如下配置:

location ~* \.(gif|otf|jpg|jpeg|png|css|js)$ {
    # 匹配到禁止的盗链域名时直接返回403
    if ($http_referer ~* "domain1\.com|domain2\.com|domain3\.com") {
        return 403;
    }

    # 下方保留原有的静态资源处理逻辑
}
  • 配置修改完成后,先执行nginx -t命令校验配置语法是否正确,确认返回success后再执行nginx -s reload重载配置,避免配置错误导致站点无法访问。
  • 白名单模式里的none代表不带Referer头的请求(比如用户直接在浏览器地址栏输入资源URL访问)、blocked代表Referer被防火墙、代理篡改或删除的请求,如果不需要允许这类直接访问场景,把这两个参数从valid_referers里删掉即可。
  • 黑名单模式如果需要新增拦截域名,直接在正则表达式里用|分隔追加即可,注意域名里的.要加反斜杠转义。
  • 如果站点使用了CDN服务,需要确认CDN回源时不会被规则拦截,可按需把CDN回源IP段配置为白名单,避免影响正常资源访问。

内容的提问来源于stack exchange,提问作者bpy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 18:06:33