温馨提示×

如何在Ubuntu上配置防盗链

小樊
31
2025-12-24 20:57:03
栏目: 智能运维

在 Ubuntu 上配置防盗链

一、Apache2 配置

  • 启用模块与目录权限
    • 启用重写模块:sudo a2enmod rewrite
    • 若使用 .htaccess,确保目标目录的 AllowOverrideAll(例如在 /etc/apache2/sites-available/000-default.conf 的对应 中设置)。
  • 方式一 目录级 .htaccess(灵活,推荐)
    • 编辑:sudo nano /var/www/html/.htaccess
    • 规则示例(允许本站与空 Referer,拦截常见图片类型):
      RewriteEngine On
      RewriteCond %{HTTP_REFERER} !^$
      RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC]
      RewriteRule \.(jpg|jpeg|png|gif|webp|svg)$ - [F,L]
      
  • 方式二 全局配置(在虚拟主机或 apache2.conf)
    • 编辑:sudo nano /etc/apache2/sites-available/000-default.conf
    • 在 *<VirtualHost :80><Directory “/var/www/html”> 中加入与上相同的规则。
  • 使配置生效
    • 检查语法:sudo apache2ctl configtest
    • 重启服务:sudo systemctl restart apache2
      以上步骤基于 Ubuntu + Apache2,使用 mod_rewrite 检查 Referer 实现基础防盗链。

二、Nginx 配置

  • 编辑站点配置:sudo nano /etc/nginx/sites-available/default
  • server 或针对静态资源的 location 中加入:
    location ~* \.(jpg|jpeg|png|gif|bmp|webp|svg)$ {
        valid_referers none blocked server_names yourdomain.com *.yourdomain.com;
        if ($invalid_referer) {
            return 403;
            # 或重定向到提示页:rewrite ^/ https://yourdomain.com/forbidden.html redirect;
        }
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
    
  • 使配置生效
    • 检查语法:sudo nginx -t
    • 重启服务:sudo systemctl reload nginx(或 restart)
      以上基于 Nginx 的 valid_referers 机制,对非法来源返回 403 或跳转至提示页。

三、测试与注意事项

  • 基本验证
    • 从外部站点或本地 HTML 中引用受保护资源,应返回 403 Forbidden 或跳转提示页。
    • 直接在浏览器地址栏访问资源(空 Referer)通常应被允许;若你的规则未包含 none/空 Referer,这类访问也会被拦截。
  • 规则与兼容性
    • yourdomain.com 替换为你的实际域名,必要时同时加入 httphttps;如需兼容 www 与非 www,使用通配:(www.)?yourdomain.com
    • 扩展名可按需增减(如 webp、svg、mp4 等)。
  • 局限与增强
    • Referer 可被伪造,该方法属于“尽力而为”的访问控制;对高价值资源可结合 签名 URLCDN 防盗链 能力增强安全性与可控性。
    • 修改配置前先备份;变更后用 configtest(Apache)或 nginx -t(Nginx)做语法检查,避免生产中断。

0