首页主机资讯Apache2 Ubuntu版如何防盗链

Apache2 Ubuntu版如何防盗链

时间2025-11-19 21:41:05发布访客分类主机资讯浏览1047
导读:Apache2 Ubuntu版防盗链配置指南 一 基本原理与准备 防盗链通过检查请求的 HTTP_REFERER 头,仅允许来自白名单域名或空来源的请求访问受保护资源(如图片、视频)。 在 Ubuntu 上通常使用 mod_rewrite...

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 放行策略可兼顾可用性。
  • 性能与维护:规则尽量精确匹配路径与扩展名,减少不必要的正则回溯;变更前备份配置,变更后及时测试。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Apache2 Ubuntu版如何防盗链
本文地址: https://pptw.com/jishu/751608.html
Debian如何利用Golang进行开发 Apache2在Ubuntu上如何权限设置

游客 回复需填写必要信息