首页主机资讯Apache2防盗链设置方法

Apache2防盗链设置方法

时间2025-10-11 00:24:04发布访客分类主机资讯浏览951
导读:Apache2防盗链设置方法 防盗链是通过限制HTTP Referer头部,防止其他网站未经授权使用你服务器上的静态资源(如图片、CSS、JS等)的常见手段。Apache2提供了多种实现方式,以下是具体步骤: 一、前置准备:启用必要模块 无...

Apache2防盗链设置方法

防盗链是通过限制HTTP Referer头部,防止其他网站未经授权使用你服务器上的静态资源(如图片、CSS、JS等)的常见手段。Apache2提供了多种实现方式,以下是具体步骤:

一、前置准备:启用必要模块

无论选择哪种方法,均需确保mod_rewrite(重写引擎)模块已启用(多数方法依赖此模块)。若未启用,执行以下命令:

sudo a2enmod rewrite  # 启用mod_rewrite
sudo systemctl restart apache2  # 重启Apache使模块生效

二、方法一:使用mod_rewrite模块(推荐,灵活且常用)

1. 配置.htaccess文件(适用于共享主机或无主配置文件权限的场景)

  • 进入网站根目录(如/var/www/html):
    cd /var/www/html
    
  • 创建或编辑.htaccess文件:
    sudo nano .htaccess
    
  • 添加以下规则(替换yourdomain.com为你的真实域名):
    RewriteEngine On  # 启用重写引擎
    RewriteCond %{
    HTTP_REFERER}
     !^$  # 允许空Referer(如直接访问图片)
    RewriteCond %{
    HTTP_REFERER}
     !^http://(www\.)?yourdomain\.com [NC]  # 允许自身域名的Referer(不区分大小写)
    RewriteRule \.(jpg|jpeg|png|gif|css|js)$ - [F,L]  # 匹配图片/CSS/JS文件,返回403 Forbidden
    
    规则说明
    • RewriteCond %{ HTTP_REFERER} !^$:允许用户直接输入URL访问资源(此时Referer为空);
    • RewriteCond %{ HTTP_REFERER} !^http://(www\.)?yourdomain\.com [NC]:允许来自你域名的Referer(包含www或不带www);
    • RewriteRule:若Referer不符合上述条件,拒绝访问并停止后续规则处理。

2. 配置虚拟主机文件(适用于VPS/有主配置文件权限的场景)

  • 打开对应的虚拟主机配置文件(如/etc/apache2/sites-available/yourdomain.com.conf):
    sudo nano /etc/apache2/sites-available/yourdomain.com.conf
    
  • < VirtualHost *:80> 块内添加以下内容(与.htaccess规则类似):
    <
        Directory "/var/www/html">
    
        RewriteEngine On
        RewriteCond %{
    HTTP_REFERER}
     !^$
        RewriteCond %{
    HTTP_REFERER}
         !^http://(www\.)?yourdomain\.com [NC]
        RewriteRule \.(jpg|jpeg|png|gif|css|js)$ - [F,L]
    <
        /Directory>
        
    
  • 保存后重启Apache:
    sudo systemctl restart apache2
    

三、方法二:使用mod_headers模块(设置Referrer Policy,增强安全性)

mod_headers模块可通过设置Referrer-Policy头部,控制浏览器发送Referer的行为,间接减少资源被盗链的风险。

1. 启用mod_headers模块

sudo a2enmod headers
sudo systemctl restart apache2

2. 配置Referrer Policy

  • 编辑虚拟主机文件(如/etc/apache2/sites-available/yourdomain.com.conf):
    <
        Directory "/var/www/html">
        
        Header set Referrer-Policy "no-referrer-when-downgrade"  # 推荐策略:仅当协议升级(如HTTP→HTTPS)时不发送Referer
        # 或更严格的策略:"same-origin"(仅同域名下发送Referer)
    <
        /Directory>
        
    
  • 保存后重启Apache:
    sudo systemctl restart apache2
    

Referrer-Policy需配合mod_rewrite使用(如方法一),才能完全阻止非法Referer访问资源。

四、方法三:使用mod_authz_core模块(基于环境的访问控制,适合精细化管理)

此方法通过设置环境变量,允许特定Referer访问资源,适合需要更灵活控制的场景。

1. 启用mod_authz_core模块

sudo a2enmod authz_core
sudo systemctl restart apache2

2. 配置虚拟主机文件

  • 编辑虚拟主机文件(如/etc/apache2/sites-available/yourdomain.com.conf):
    <
        Directory "/var/www/html">
        
        AuthType Basic  # 基本认证(可选,增强安全性)
        AuthName "Restricted Content"
        AuthUserFile /etc/apache2/.htpasswd  # 认证文件路径(可选)
        Require valid-user  # 要求有效用户(可选)
        
        <
        FilesMatch "\.(jpg|jpeg|png|gif|css|js)$">
        
            Order allow,deny
            Deny from all
            Allow from env=allowed_referer  # 仅允许环境变量allowed_referer为真的请求
            SetEnvIf Referer "^http://(www\.)?yourdomain\.com$" allowed_referer  # 设置环境变量
        <
        /FilesMatch>
        
    <
        /Directory>
        
    
  • 保存后重启Apache:
    sudo systemctl restart apache2
    

:若不需要认证,可删除AuthTypeAuthNameAuthUserFileRequire valid-user行。

五、测试防盗链效果

  1. 从你的网站(如yourdomain.com)访问图片资源,应能正常显示;
  2. 从其他网站(如baidu.com)通过< img src="yourdomain.com/image.jpg"> 引用你的图片,应返回403 Forbidden错误。

六、注意事项

  • 替换域名:所有规则中的yourdomain.com需替换为你的真实域名(包含www或不带www,根据实际情况调整);
  • 文件类型扩展:根据需要调整RewriteRuleFilesMatch中的文件类型(如添加svgwebp等);
  • 避免误拦截:确保RewriteCond %{ HTTP_REFERER} !^$存在,允许用户直接访问资源;
  • CDN/代理适配:若使用CDN(如Cloudflare),需将规则中的域名替换为CDN的域名,并在CDN设置中允许Referer传递;
  • 性能影响mod_rewrite规则会增加服务器处理负担,建议在高流量网站上优化规则(如合并条件)。

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


若转载请注明出处: Apache2防盗链设置方法
本文地址: https://pptw.com/jishu/723076.html
Linux Aliases命令如何简化操作 Ubuntu Apache2重定向规则

游客 回复需填写必要信息