温馨提示×

ubuntu apache2怎样配置防盗链

小樊
36
2026-09-17 09:42:49
栏目: 智能运维

在 Ubuntu 上使用 Apache2 配置防盗链(Hotlink Protection),通常是通过 mod_rewritemod_setenvif 来实现。下面给你几种常见、实用的做法。


一、开启必要模块

sudo a2enmod rewrite
sudo systemctl restart apache2

二、方法一:使用 .htaccess(最常用)

适合虚拟主机 / 没有服务器root权限的情况。

1. 允许 .htaccess 生效

编辑站点配置(如 /etc/apache2/sites-available/000-default.conf):

<Directory /var/www/html>
    AllowOverride All
</Directory>

然后重启 Apache:

sudo systemctl restart apache2

2. 在网站根目录创建/编辑 .htaccess

RewriteEngine On

# 允许空 Referer(直接访问)
RewriteCond %{HTTP_REFERER} !^$
# 允许自己的域名
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC]
# 阻止图片、视频等被盗链
RewriteRule \.(jpg|jpeg|png|gif|webp|mp4|avi|mov)$ - [F]

✅ 效果:

  • 自己网站可访问
  • 别人网站引用会返回 403 Forbidden

三、方法二:在 Apache 配置文件中直接配置(推荐生产环境)

编辑站点配置:

sudo nano /etc/apache2/sites-available/000-default.conf

<VirtualHost> 内添加:

<Directory /var/www/html>
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC]
    RewriteRule \.(jpg|jpeg|png|gif|webp|mp4)$ - [F]
</Directory>

重启 Apache:

sudo systemctl restart apache2

四、方法三:返回警告图片(更友好)

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC]
RewriteRule \.(jpg|png|gif)$ /stop-hotlink.png [R,L]

五、仅允许特定域名(白名单方式)

SetEnvIfNoCase Referer "^https?://(www\.)?yourdomain\.com" allowed
SetEnvIfNoCase Referer "^$" allowed

<FilesMatch "\.(jpg|png|gif|mp4)$">
    Require env allowed
</FilesMatch>

六、常见注意事项

✅ 测试防盗链:

curl -I -e "http://badsite.com" http://yourdomain.com/image.jpg

✅ 搜索引擎图片可能受影响(可加白名单)

✅ CDN / 反向代理要注意 Referer 是否保留


如果你愿意,可以告诉我:

  • 你的 Apache 版本
  • 是否使用 CDN(如 Cloudflare)
  • 想保护的是 图片 / 视频 / 文件

我可以帮你写一份精准配置

0