如何在Ubuntu上配置Apache防盗链(防盗劫持核心措施)
防盗链依赖Apache的mod_rewrite(重写引擎)和mod_headers(头部控制)模块,需先启用:
sudo a2enmod rewrite headers
sudo systemctl restart apache2
进入需要保护的目录(如/var/www/html/images),创建或编辑.htaccess文件:
sudo nano /var/www/html/images/.htaccess
添加以下内容(替换yourdomain.com为你的实际域名,可根据需求扩展文件类型):
RewriteEngine On
# 允许空Referer(用户直接输入URL访问)或来自自身域名的请求
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain\.com [NC]
# 可选:允许信任的第三方域名(如CDN或合作伙伴)
# RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?trusted-domain\.com [NC]
# 禁止其他来源访问图片/视频资源,返回403 Forbidden
RewriteRule \.(jpg|jpeg|png|gif|svg|mp4|avi|mov)$ - [F,L]
保存并退出。
编辑虚拟主机配置文件(如/etc/apache2/sites-available/your-site.conf),在<VirtualHost *:80>块内添加:
<Directory "/var/www/html/images">
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|svg|mp4|avi|mov)$ - [F,L]
</Directory>
保存后启用配置并重启Apache:
sudo a2ensite your-site.conf
sudo systemctl restart apache2
yourdomain.com的网页中引用受保护的图片,应正常显示。hacker.com)的网页中引用同一图片,应返回403 Forbidden错误(或你配置的替代图片,若设置了重定向)。RewriteCond %{HTTP_REFERER} !^$条件(默认已包含)。RewriteRule的文件匹配中添加需保护的格式(如mp4|avi)。RewriteRule \.(jpg|jpeg)$ http://yourdomain.com/images/nolink.png [R,L])。