温馨提示×

Apache2 Ubuntu版如何防盗链

小樊
37
2025-11-19 10:53:35
栏目: 智能运维

Apache2 Ubuntu版防盗链配置指南

一 基本原理与准备

  • 防盗链通过检查请求的 HTTP_REFERER 头,仅允许来自白名单域名或空来源的请求访问受保护资源(如图片、视频)。
  • 在 Ubuntu 上通常使用 mod_rewrite 模块实现;若使用基于目录的配置,需确保目录允许 .htaccess 覆盖。
  • 建议同时支持 HTTP 与 HTTPS,并对规则使用 [NC] 忽略大小写。

二 操作步骤

  1. 启用必要模块
    • 启用重写模块:sudo a2enmod rewrite
    • 如需在目录级使用 .htaccess,确保虚拟主机配置中目录设置为:AllowOverride All
  2. 选择一种配置方式并写入规则
    • 全局方式:编辑 /etc/apache2/apache2.conf/etc/apache2/conf-available/anti-hotlinking.conf
    • 虚拟主机方式:编辑 /etc/apache2/sites-available/yourdomain.com.conf
  3. 使配置生效
    • 若使用 conf-available 方式:sudo a2enconf anti-hotlinking
    • 重启服务:sudo systemctl restart apache2
  4. 测试
    • 从非白名单域名加载受保护资源,应返回 403 Forbidden
    • 从白名单域名或浏览器直接访问应正常返回资源

三 常用配置示例

  • 示例一 基础规则(HTTP 与 HTTPS,常用图片类型)
<IfModule mod_rewrite.c>
    RewriteEngine On
    # 允许空来源(浏览器直接访问、部分客户端)
    RewriteCond %{HTTP_REFERER} !^$
    # 允许本站域名(含 www 与 HTTPS)
    RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC]
    # 阻止常见图片类型
    RewriteRule \.(jpg|jpeg|png|gif|webp|svg)$ - [F,L]
</IfModule>

说明:将 yourdomain.com 替换为你的实际域名;按需增减扩展名。

  • 示例二 多域名白名单
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC]
    RewriteCond %{HTTP_REFERER} !^https?://(www\.)?another\.com [NC]
    RewriteRule \.(jpg|jpeg|png|gif)$ - [F,L]
</IfModule>

说明:可继续添加更多允许域名。

  • 示例三 仅保护指定目录(如 /images)
<Directory "/var/www/html/images">
    Require all granted
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC]
    RewriteRule \.(jpg|jpeg|png|gif)$ - [F,L]
</Directory>

说明:将规则限制在 /images 目录,减少对其他资源的影响。

四 进阶与注意事项

  • 空 Referer 的处理:部分合法访问(如直接输入地址、移动端客户端)可能没有 Referer,建议保留 !^$ 条件以避免误拦截。
  • 启用目录级配置:若使用 .htaccess,虚拟主机 需设置 AllowOverride All,并确保 Apache 对 .htaccess 有读取权限。
  • 规则作用范围:将规则放在 内更可控;全局配置可能影响所有站点。
  • 使用 HTTPS:规则中同时匹配 http 与 https(使用 https?),避免开启 HTTPS 后规则失效。
  • 浏览器与隐私模式:隐私/无痕模式可能不发送 Referer,空 Referer 放行策略可兼顾可用性。
  • 性能与维护:规则尽量精确匹配路径与扩展名,减少不必要的正则回溯;变更前备份配置,变更后及时测试。

0