跨境独立站图片防盗链海外CDN:跨境独立站图片防盗链与海外

自己做跨境独立站,辛辛苦苦拍的图片被别家网站直接引用,不仅消耗带宽还影响加载速度。
图片防盗链配合海外CDN是一套有效方案,下面按零基础能直接跟做的节奏来说。

动手前需要准备什么

  • 一台已安装 Nginx 的服务器(如果你用 Apache 思路类似,只是配置语法不同)。
  • 你的独立站已经绑定域名并启用了海外 CDN(本文以 Cloudflare 为例)。
  • 图片资源存放在服务器某个目录下,比如 /var/www/html/wp-content/uploads/

第一步:服务器端配置图片防盗链

大多数内容管理系统(如 WordPress)的防盗链插件效果有限,最可靠的是直接在 Nginx 里控制。

  1. 通过 SSH 登录服务器,找到当前站点配置文件。通常宝塔路径是 /www/server/panel/vhost/nginx/你的域名.conf,手动安装的话一般在 /etc/nginx/conf.d/ 下。
  2. server 块内(或对应 location 块)添加以下规则:
location ~ \.(gif|jpg|jpeg|png|webp|bmp)$ {
    valid_referers none blocked yourdomain.com *.yourdomain.com;
    if ($invalid_referer) {
        return 403;
    }
}

解释一下:

  • valid_referers 定义允许的来源,这里包含了直接访问(none)、带 referer 但被屏蔽的情况(blocked),以及你自己的域名和子域名。
  • if ($invalid_referer) 判断请求来源不在白名单内,直接返回 403 状态码。
  1. 检查配置是否有语法错误:
nginx -t
  1. 重新加载 Nginx 让配置生效:
nginx -s reload

第二步:海外CDN侧开启防盗链

服务器端配置只能挡住直接请求,但很多 CDN 会缓存图片,来源变成 CDN 节点,所以必须在 CDN 侧也做防盗链。
以 Cloudflare 为例:

  1. 登录 Cloudflare 控制台,选择你的域名。
  2. 进入 Security → Bot Fight ModeScrape Shield(位置可能随版本变化)。
  3. 打开 Hotlink Protection(热链接保护)。
  4. 根据需要勾选允许跳过保护的来源,通常填写你的网站域名(如 yourdomain.com)即可,不需要再填 noneblocked

如果你用其他 CDN,类似功能一般叫“防盗链”“Referer 黑白名单”或“Hotlink protection”。

避坑提醒

  • CDN 未同步服务器规则:只配一边是没用的。客户请求先到 CDN,CDN 放行了才会回源到服务器,服务器再判断来源时来源已经是 CDN 节点了,服务器端规则基本失效。所以必须两端都配,且 CDN 端要放行你自己的域名。
  • 白名单里包含 CDN 回源 IP:这不是必须的,但有的 CDN 会通过特殊 IP 回源,如果你发现正常用户图片也被拦截,可以在 valid_referers 里加上 cdn.yourcdnprovider.com 或 CDN 的回源 IP 段。
  • 移动端或部分浏览器无 referernone 选项已经处理了不带 referer 的请求(直接访问、收藏夹打开等),但如果你希望所有直接访问也允许,保留 none;如果希望严格一点只允许站内引用,可以去掉 none
  • 预览缓存效果:修改规则后 CDN 可能有缓存,建议在 Cloudflare 的 Caching → Purge Everything 清除所有缓存再测试。

如何验证配置是否生效

验证分为两步:

  1. 本地直接访问:在浏览器打开你那独立站的图片链接,应该能正常显示。
  2. 模拟盗链:打开开发者工具(F12),在 Console 里执行:
fetch('https://你的域名/图片路径.jpg', {
    headers: { 'Referer': 'https://evil.com/' }
}).then(res => console.log(res.status));

如果返回 403,说明服务器端防盗链生效。

  1. CDN 侧验证:如果上一步也返回 403,但把 Referer 改成你的域名时能正常返回 200,就表明两端配置正确。

常见问题解答

Q:配置后自己网站图片不显示了?
检查 CDN 侧 Hotlink Protection 的白名单是否包含了你的域名;再检查服务器端 valid_referers 是否写错域名或漏了子域名。

Q:用了 Cloudflare 后 curl 测试一直 403?
Cloudflare 的防爬虫机制可能会误判,可以暂时关闭 Bot Fight Mode 再测试,确认防盗链规则本身没有问题。

Q:图片被缓存后,修改规则需要清缓存吗?
是的,建议每次修改服务器或 CDN 规则后,清一次 CDN 缓存,避免缓存的旧规则影响测试。

如果你正在处理跨境独立站图片防盗链与海外 CDN 的整合,建议先按本文配好服务器端 Nginx 规则,再开启 CDN 端的保护,最后按验证步骤检查一遍。
遇到异常时优先回看避坑部分,基本都能解决。

分享到:
上一篇
宝塔面板定时清理网站缓存文件的完整步骤
下一篇
服务器CPU温度过高住宅散热优化
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意