怎样配置Apache实现防盗链
Apache防盗链配置有三种方法:基于mod_rewrite模块按Referer拦截,利用mod_headers设置HTTP安全头,或通过mod_security实现精细访问控制。配置前需测试验证,并定期更新备份,避免误拦正常用户,确保安全与可用性。
说到Apache防盗链的配置,实际操作中主要有几种常见方案,每种都有自己的适用场景。下面逐个来掰扯一下,你可以根据自己的服务器环境和需求来选择。

方法一:使用mod_rewrite模块
这是最经典、最直接的方式,几乎每个Apache管理员都用过。核心思路就是利用重写引擎,根据请求的来源(Referer)来决定是否放行。
-
首先确保
mod_rewrite模块已经加载。在Apache配置文件(httpd.conf或apache2.conf)中找到下面这一行,去掉前面的注释符号(#):LoadModule rewrite_module modules/mod_rewrite.so -
然后在网站根目录的
.htaccess文件(或者虚拟主机配置中)写入以下规则:RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://(www.)?yourdomain.com [NC] RewriteRule .(jpg|jpeg|png|gif)$ - [F,L]解释一下这几行的大意:
RewriteEngine On—— 开启重写引擎。RewriteCond ... [NC]—— 检查请求的来源(HTTP_REFERER),如果不以你的域名开头(不区分大小写),就满足条件。RewriteRule ... [F,L]—— 一旦条件满足,直接返回403 Forbidden状态码,并停止后续规则处理。这里的[F]就是拒绝访问,[L]表示最后一条规则。
注意把
yourdomain.com换成你实际的域名。另外,如果需要允许空Referer(比如用户直接输入图片链接访问),可以在RewriteCond后面再加一行排除条件,比如:RewriteCond %{HTTP_REFERER} !^$ [NC]。
方法二:使用mod_headers模块
如果不想靠重写引擎绕来绕去,也可以用更现代的方式——通过HTTP头控制。这种方式对浏览器行为更友好,但严格来说不是真正的“防盗链”,而是设置一些安全策略。
-
同样先确认
mod_headers模块已启用:LoadModule headers_module modules/mod_headers.so -
在
.htaccess中添加如下配置:Header set X-Frame-Options "SAMEORIGIN" Header set Referrer-Policy "no-referrer-when-downgrade" 这里主要做了两件事:
X-Frame-Options: SAMEORIGIN—— 防止图片被其他站点的iframe嵌入。Referrer-Policy: no-referrer-when-downgrade—— 控制引用信息发送策略,在一定程度上可以减少被外站直接引用的可能。
这种方法的优点是配置简单,而且不会像mod_rewrite那样直接拦截所有非法Referer——它更多是让浏览器主动遵守规则。对于大多数现代浏览器来说,效果还不错,但遇到老旧的客户端可能就力不从心了。
方法三:使用第三方模块
如果前两种方案都嫌不够灵活,或者你需要更精细的访问控制(比如动态黑名单、请求频率限制),可以考虑上mod_security这个重量级选手。它是一款Web应用防火墙(WAF),功能远不止防盗链。
-
安装
mod_security模块。以Ubuntu为例,一条命令搞定:sudo apt-get install libapache2-mod-security2 -
配置防盗链规则。在
/etc/modsecurity/modsecurity.conf或/etc/apache2/conf-a vailable/security2.conf中写入类似下面的内容:SecAction "id:500001,phase:2,nolog,pass,initcol:ip=%{REMOTE_ADDR},setvar:ip.blacklist=%{REMOTE_ADDR},expirevar:ip.blacklist=600" SecRule REMOTE_ADDR "@blacklist" "id:500002,phase:1,pass,log,msg:'Blocked IP',status:403,tag:'application-multi',tag:'language-multi',tag:'platform-multi',tag:'attack-reconnaissance',tag:'OWASP_CRS/WEB_ATTACK/REQUEST_HEADER_INJECTION',tag:'WASCTC/WASC-21',tag:'OWASP_TOP_10/A7',tag:'PCI/6.5.10',setvar:ip.blacklist=%{ip.blacklist},expirevar:ip.blacklist=600"这条规则的作用是:将访问者的IP加入黑名单,并在一定时间内(600秒)拒绝其后续请求。当然,真正的防盗链还要配合referer检测或URI匹配,这里只是一个简化的示范。mod_security的学习曲线比前两种方法陡很多,但一旦上手,它能做的事情远超防盗链本身。
注意事项
无论选择哪种方案,有几点得牢记:
- 先测试再上线 —— 最好在开发环境或测试机上跑一遍,确认规则生效且没有意外拦截到正常用户。
- 备份配置 —— 修改任何Apache配置文件之前,都养成备份的习惯,万一改错了还能快速回滚。
- 定期更新 —— Apache本身会发布安全补丁,模块也会更新,保持系统最新能减少安全隐患。
以上三种方法各有侧重,从简单粗暴的mod_rewrite,到语义化的mod_headers,再到防御全面的mod_security,你可以根据网站的实际情况组合使用。比如先用mod_rewrite做个基础防护,再配合mod_security做更深度的过滤——这也是很多生产环境的常见做法。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















