温馨提示×

Debian Nginx防盗链设置方法

小樊
36
2025-12-27 16:35:35
栏目: 智能运维

Debian 下使用 Nginx 实现防盗链

一 基本原理与准备

  • 防盗链基于请求头中的 Referer 字段实现,Nginx 通过内置模块 ngx_http_referer_modulevalid_referers 指令进行白名单校验,不匹配时配合 $invalid_referer 返回 403 或跳转警告资源。该机制可被客户端伪造,适合做“降低盗链概率”的访问控制,而非绝对安全。Debian 上通常默认启用该模块。准备步骤:安装 Nginx(如未安装)并确认配置文件路径为 /etc/nginx/nginx.conf/etc/nginx/sites-available/default

二 快速配置示例

  • 保护指定目录
    server {
        listen 80;
        server_name yourdomain.com;
    
        location /protected/ {
            # 允许空 Referer、被防火墙屏蔽的 Referer、本站域名与子域
            valid_referers none blocked server_names yourdomain.com *.yourdomain.com;
            if ($invalid_referer) {
                return 403;
            }
            # 其他配置(如 root、proxy_pass 等)
        }
    }
    
  • 保护图片等静态资源(含 HTTPS)
    server {
        listen 443 ssl;
        server_name yourdomain.com www.yourdomain.com;
    
        ssl_certificate     /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
        include            /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam         /etc/letsencrypt/ssl-dhparams.pem;
    
        root /var/www/html;
        index index.html;
    
        # 仅对常见图片类型生效
        location ~* \.(jpg|jpeg|png|gif|ico)$ {
            valid_referers none blocked yourdomain.com www.yourdomain.com;
            if ($invalid_referer) {
                return 403;
                # 也可返回警告图片:rewrite ^ /anti-hotlinking.jpg last;
            }
        }
    }
    
  • 说明
    • none:允许没有 Referer 的请求(如直接输入 URL)。
    • blocked:允许被防火墙/代理移除或屏蔽 Referer 的请求。
    • server_names:匹配当前 server_name 与通配子域。
    • 正则写法示例:~.example.com$ 用于更灵活匹配。

三 生效与验证

  • 语法检查与生效
    sudo nginx -t
    sudo systemctl reload nginx
    
  • 验证方法
    • 浏览器从允许的域名页面加载资源,应正常返回。
    • 从不允许的域名或命令行伪造 Referer 访问应返回 403
      curl -I https://yourdomain.com/test.jpg --header "Referer: http://evil.com"
      
    • 若配置了跳转警告图片,非法来源将返回该图片。

四 进阶与注意事项

  • 仅对关键资源启用:对体积大或易被外链的资源(如 .jpg/.png/.mp4)加规则,避免对全站生效影响正常功能。
  • 正确处理空 Referer:移动端、直接访问、站内跳转等场景可能出现空 Referer,按需保留 none,否则合法流量可能被拦截。
  • 正则与通配:使用 ~ 开启正则,注意转义点号并限定结尾(如 .example.com$),避免误匹配。
  • 替代动作:除 return 403 外,可 rewrite 到警告图片或跳转页,提升用户体验。
  • 安全性边界:Referer 可被伪造,防盗链并非强认证;对高价值资源建议叠加鉴权(如签名 URL、登录态校验、CDN 防盗链)。

0