如何在Ubuntu上配置防盗链
导读:在 Ubuntu 上配置防盗链 一、Apache2 配置 启用模块与目录权限 启用重写模块:sudo a2enmod rewrite 若使用 .htaccess,确保目标目录的 AllowOverride 为 All(例如在 /etc/...
在 Ubuntu 上配置防盗链
一、Apache2 配置
- 启用模块与目录权限
- 启用重写模块:sudo a2enmod rewrite
- 若使用 .htaccess,确保目标目录的 AllowOverride 为 All(例如在 /etc/apache2/sites-available/000-default.conf 的对应 中设置)。
- 方式一 目录级 .htaccess(灵活,推荐)
- 编辑:sudo nano /var/www/html/.htaccess
- 规则示例(允许本站与空 Referer,拦截常见图片类型):
RewriteEngine On RewriteCond %{ HTTP_REFERER} !^$ RewriteCond %{ HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC] RewriteRule \.(jpg|jpeg|png|gif|webp|svg)$ - [F,L]
- 方式二 全局配置(在虚拟主机或 apache2.conf)
- 编辑:sudo nano /etc/apache2/sites-available/000-default.conf
- 在 *< VirtualHost :80> 的 < Directory “/var/www/html”> 中加入与上相同的规则。
- 使配置生效
- 检查语法:sudo apache2ctl configtest
- 重启服务:sudo systemctl restart apache2
以上步骤基于 Ubuntu + Apache2,使用 mod_rewrite 检查 Referer 实现基础防盗链。
二、Nginx 配置
- 编辑站点配置:sudo nano /etc/nginx/sites-available/default
- 在 server 或针对静态资源的 location 中加入:
location ~* \.(jpg|jpeg|png|gif|bmp|webp|svg)$ { valid_referers none blocked server_names yourdomain.com *.yourdomain.com; if ($invalid_referer) { return 403; # 或重定向到提示页:rewrite ^/ https://yourdomain.com/forbidden.html redirect; } expires 30d; add_header Cache-Control "public, immutable"; } - 使配置生效
- 检查语法:sudo nginx -t
- 重启服务:sudo systemctl reload nginx(或 restart)
以上基于 Nginx 的 valid_referers 机制,对非法来源返回 403 或跳转至提示页。
三、测试与注意事项
- 基本验证
- 从外部站点或本地 HTML 中引用受保护资源,应返回 403 Forbidden 或跳转提示页。
- 直接在浏览器地址栏访问资源(空 Referer)通常应被允许;若你的规则未包含 none/空 Referer,这类访问也会被拦截。
- 规则与兼容性
- 将 yourdomain.com 替换为你的实际域名,必要时同时加入 http 与 https;如需兼容 www 与非 www,使用通配:(www.)?yourdomain.com。
- 扩展名可按需增减(如 webp、svg、mp4 等)。
- 局限与增强
- Referer 可被伪造,该方法属于“尽力而为”的访问控制;对高价值资源可结合 签名 URL 或 CDN 防盗链 能力增强安全性与可控性。
- 修改配置前先备份;变更后用 configtest(Apache)或 nginx -t(Nginx)做语法检查,避免生产中断。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上配置防盗链
本文地址: https://pptw.com/jishu/780935.html
