从零开始的完整配置指南
目录导读
- 防盗链的核心原理 – 为什么你的资源需要保护?
- 主流防盗链工具对比 – Nginx、Apache、CDN谁更实用?
- 防盗链规则设置实战 – 一步步教你配置白名单与黑名单
- 常见问题与避坑指南 – 防止误伤合法用户
- 进阶技巧 – 结合Referer、Token、User-Agent的多层防护
- 问答环节 – 解决你关于防盗链的7个高频疑问
防盗链的核心原理
盗链是指其他网站未经授权,直接引用你服务器上的图片、视频、CSS/JS文件等资源,从而消耗你的带宽与服务器资源,防盗链工具通过检查HTTP请求头中的Referer字段(来源网址),判断请求是否来自允许的域名,若非白名单域名则拒绝返回资源。

关键点:Referer可被伪造,因此防盗链只是基础防护,配合Token验证、时间戳签名等更可靠。
主流防盗链工具对比
| 工具/平台 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| Nginx | 免费、配置灵活、性能高 | 需熟悉命令行 | 自建服务器 |
| Apache | 规则直观,.htaccess易用 | 高并发下效率较低 | 传统虚拟主机 |
| 阿里云CDN | 一键配置,支持Referer+UA+IP多重规则 | 付费 | 大型网站/视频站 |
| Cloudflare | 免费套餐含基础防盗链,全球加速 | 部分规则需企业版 | 外贸/多区域站点 |
防盗链规则设置实战
Nginx服务器(推荐)
location ~* \.(jpg|jpeg|png|gif|mp4|zip)$ {
valid_referers none blocked server_names
*.example.com
~\.google\.;
if ($invalid_referer) {
return 403;
# 或者重定向到一张“禁止盗链”图片
# rewrite ^/ 永久;
}
}
说明:none允许直接访问(如从浏览器地址栏输入),blocked允许带Referer但无协议头的请求,将example.com替换为你自己的域名即可。
Apache服务器(.htaccess文件)
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain\.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|mp4)$ - [F,NC]
注意:yourdomain.com需替换为实际域名,如需允许百度、搜狗等搜索引擎,可添加类似RewriteCond行。
云CDN控制台(以阿里云为例)
- 进入CDN域名管理 → 访问控制 → 防盗链配置。
- 开启Referer防盗链,选择“白名单”模式,输入:
- (允许空Referer,推荐勾选)
*.yourdomain.com
- 可选:添加User-Agent黑名单(阻止常见爬虫工具),或设置IP黑白名单。
常见问题与避坑指南
- 误伤搜索引擎爬虫:务必在白名单中加入
*.baidu.com、*.google.com、*.bing.com等,否则网站无法被收录。 - 移动端小程序/APP:部分APP请求不带Referer,可允许
none或改用Token验证。 - CDN与源站规则冲突:若用了CDN,防盗链规则应在CDN层设置,而非源站Nginx。
- Referer被伪造:纯Referer防盗链防君子不防小人,重要资源建议加时间戳签名(如阿里云CDN的URL鉴权)。
进阶技巧:多层防护组合
- Referer白名单 + Token签名:即使用户伪造Referer,无有效Token也无法访问。
- User-Agent过滤:阻止
curl、Python-requests等工具。 - IP频率限制:同一IP每秒请求超过阈值自动封禁。
- 跳转验证:所有资源必须先访问页面获取动态链接,直接引用链接无效。
问答环节:解决你的7个高频疑问
Q1:设置了防盗链后,为什么我自己的网站图片也打不开?
A1:检查白名单中是否包含你当前访问的域名(含子域名),或未允许none(空Referer),在Nginx中可临时关闭if块测试。
Q2:防盗链规则对WordPress等CMS生效吗?
A2:生效,规则作用于服务器层,与CMS无关,但需注意WordPress后台编辑器中上传图片的Referer可能来自wp-admin域。
Q3:能否只对特定目录设置防盗链?
A3:可以,Nginx中使用location /images/代替全局匹配;Apache中在<Directory /var/www/images>中编写规则。
Q4:CDN防盗链和源站设置哪个优先?
A4:CDN优先,CDN层拦截后,请求不会到达源站,节省带宽更高效。
Q5:如何防止他人直接通过IP地址访问我的资源?
A5:Nginx中使用server_name指令,仅允许通过域名访问;或在防盗链规则中拒绝所有非解析IP。
Q6:视频盗链特别严重,有什么专用工具?
A6:推荐使用阿里云视频点播的Referer+User-Agent+时间戳三级防盗链,或采用m3u8切片加密。
Q7:免费CDN(如Cloudflare)的防盗链够用吗?
A7:基础够用,但规则灵活度有限,若遭密集盗链,建议升级付费版或结合源站Nginx规则。
最后提醒:防盗链规则需定期测试,可借助在线Referer模拟工具验证效果,保护好资源的同时,请确保合法用户访问无阻。
标签: 来源请求验证