Apache在CentOS上如何实现防盗版功能
在CentOS上,Apache通常通过“防盗链”来阻止外部站点直接引用你的静态资源(如图片、视频、压缩包),从而减少带宽盗用与内容被非法嵌入的风险。以下给出可落地的配置方法与注意事项。
一、工作原理与适用范围
利用HTTP请求头中的Referer字段判断访问来源;对不在白名单的来源返回403Forbidden或重定向到占位图/提示页,从而阻断外链。适用于图片、音视频、文档等静态资源的直链滥用防护。该方法属于“访问控制”而非数字版权保护(DRM),无法阻止用户下载后再次传播。
二、方法一基于目录的Rewrite规则(推荐)
适用场景:对整站或指定目录生效,集中管理、性能更好。
启用模块(若未启用):
检查:apachectl-M|greprewrite
启用(模块名可能为rewrite_module):编辑/etc/httpd/conf.modules.d/*.conf,确保有LoadModulerewrite_modulemodules/mod_rewrite.so
配置示例(在对应VirtualHost或Directory中):
说明:
[NC]忽略大小写;[F]返回403;[L]为最后一条规则。
将**/var/www/html/protected**替换为你的实际目录;按需增减资源后缀。
三、方法二使用SetEnvIfNoCase与FilesMatch
适用场景:更细粒度地按文件类型或目录控制,逻辑清晰。
配置示例:
说明:
白名单支持多个域名;^$用于放行空Referer(常见于直接访问或客户端下载)。
若你的Apache为2.4+,也可结合Requireallgranted/denied与条件表达式实现同等效果。
四、方法三使用.htaccess(仅当AllowOverride允许)
在站点根目录或资源目录创建/编辑**.htaccess**:RewriteEngineOnRewriteCond%{HTTP_REFERER}!^https?://(www\.)?yourdomain\.com[NC]RewriteCond%{HTTP_REFERER}!^https?://(www\.)?partner\.com[NC]RewriteCond%{HTTP_REFERER}!^$RewriteRule\.(jpg|jpeg|png|gif|bmp|webp|svg|mp4|mp3|zip|rar|pdf)$-[F,L]
前提:对应目录的AllowOverride需为All或包含FileInfo;否则规则不会生效。
修改后建议先执行:apachectlconfigtest检查语法,再重启服务。
五、验证与注意事项
验证步骤:
重启Apache:systemctlrestarthttpd
使用另一站点页面嵌入你的资源或通过curl指定Referer测试:
curl-I-H“Referer:http://evil.com”https://www.ksu5.com/uploadfile/allimg/2025/11/30/test.jpg
预期返回:HTTP/1.1403Forbidden
浏览器测试请清理缓存或使用隐身模式,避免命中旧资源。
重要注意事项:
Referer可被客户端伪造或缺失(如移动端App、空Referer下载器),因此该方案是“尽力而为”的访问控制,并非绝对防护。
对搜索引擎爬虫、站内页面、CDN回源等来源要加入白名单,避免误杀。
若资源需对外“预览+防直链”,可改为签名URL或临时令牌方案(应用层实现),与Referer策略组合使用更稳妥。

