为博客图片配置七牛云 Kodo 存储,彻底杜绝盗刷流量
记录一次从“公开空间”到“私有空间 + CDN 防盗链”的完整折腾过程
我的博客(blog.nanyu.xin)使用的是 Anheyu 博客框架。随着文章越来越多,本地服务器的存储压力逐渐变大,于是决定把图片搬到云对象存储上。我选择了七牛云的 Kodo 服务,便宜、稳定,而且新用户有免费额度。
但是,对象存储最怕的就是盗刷流量——如果有人把你的图片链接贴到其他网站,或者直接用脚本疯狂请求,一天就能刷掉你几个月的套餐费用。为了避免这种情况,我需要一套比较完善的安全配置。
经过一番摸索(期间也遇到了一些坑),终于配置好了。下面是我的完整过程,希望对你有帮助。
💎 我的部署环境
服务器管理面板:1Panel
博客框架:Anheyu-app(基于 Golang + Vue3 构建)
部署方式:Docker Compose
一、创建存储空间 —— 第一步就选“私有”
进入七牛云控制台 → 对象存储 Kodo → 新建空间。
关键点:访问控制一定要选择 “私有”。如果选了“公开”,任何人都能直接访问你的图片,防盗链效果会大打折扣。
创建完成后,记下你的 空间名称 和 存储区域(比如我的是 my-anheyu-tupian,区域 华南-广东)。
二、绑定自定义域名并配置 HTTPS
七牛云提供的测试域名(如 xxx.clouddn.com)有诸多限制,而且不支持私有空间的高级配置。强烈建议绑定自己的域名。
在七牛云 Kodo 空间管理 → 域名管理 → 绑定你自己的域名,例如
anheyutupian.nanyu.xin。按照提示去你的域名 DNS 服务商(如阿里云、腾讯云)添加 CNAME 记录,指向七牛云给出的地址。
申请 SSL 证书:七牛云提供免费的 TrustAsia 单域名证书,有效期为 90 天。在 CDN 域名的 HTTPS 配置 中申请并绑定。
注意:申请时需要添加一条 TXT 解析记录 验证域名所有权。添加后稍等几分钟,验证通过即可签发证书。
证书签发后,务必开启 HTTPS,否则博客(如果用的是 HTTPS)会因为混合内容而拦截图片。
三、CDN 访问控制 —— 防盗链的核心
图片存储的访问路径是:用户 → CDN 域名 → 七牛云私有存储空间。所以防盗链主要在 CDN 层 实现。
进入七牛云 CDN 控制台 → 域名管理 → 找到你绑定的域名(例如 anheyutupian.nanyu.xin)→ 访问控制。
1. Referer 防盗链
模式选择 “白名单”。
填入你博客的域名:
blog.nanyu.xin以及*.nanyu.xin(通配符可以匹配所有子域名)。禁止空 Referer:取消勾选“允许空 Referer”。这样直接粘贴图片链接到浏览器地址栏也会被拒绝(返回 403)。
2. 回源鉴权 —— 必须开启
因为你的存储空间是 私有 的,CDN 必须获得授权才能从空间拉取图片。所以 “回源鉴权” 一定要设置为 “已开启”。
如果这一步没开,你博客上的所有图片都会 403。
3. IP 黑白名单(备用)
目前可以不配置。如果以后发现某个 IP 疯狂刷流量,可以直接在这里拉黑。
四、Anheyu 博客存储策略配置
登录 Anheyu 博客后台(地址通常是 https://你的博客域名/login),找到存储策略配置的地方(一般在 后台 -> 系统管理 -> 存储策略,具体路径可参考官方文档)。
注意:由于我部署时使用了
1Panel和Docker Compose,因此在 Anheyu 后台填入的配置项与标准部署方式完全相同,具体取决于后台的表单字段。
需要填写的关键项:
| 配置项 | 填写内容 | 说明 |
|---|---|---|
| 存储空间 | my-anheyu-tupian | 你在七牛云创建的空间名称 |
| 存储区域 | 华南-广东 | 与创建时一致 |
| AccessKey / SecretKey | 从七牛云“密钥管理”获取 | 注意保密 |
| 访问域名 | https://anheyutupian.nanyu.xin | 绑定的自定义域名,必须带 https:// |
| 私有空间 | 开启 | 这个开关非常重要!如果不开启,Anheyu 不会生成带签名的链接,导致访问失败 |
| 存储根目录 | /anheyu | 可选,方便管理文件 |
五、踩坑与解决
坑1:图片一直显示 “This image couldn't be loaded”
原因:我忘记在 Anheyu 存储策略中开启 “私有空间” 开关。
解决:打开开关,保存,刷新博客 → 图片恢复正常。
坑2:HTTPS 证书验证失败
原因:申请证书时添加的 TXT 记录没有生效,或者主机记录写错了(应该是 _dnsauth.anheyutupian,而不是 _dnsauth.anheyutupian.nanyu.xin)。
解决:去 DNS 管理后台仔细核对记录值,等待生效后重新验证。
坑3:存储空间的 Referer 防盗链要不要开?
不要开。因为你的存储空间已经是私有模式,并且 CDN 已经开启了回源鉴权。如果存储空间再开启 Referer 防盗链,CDN 的回源请求可能会因为没有 Referer 而被拒绝,导致图片 403。CDN 负责防盗链,存储空间只负责私有鉴权,各司其职即可。
坑4:在 1Panel 中如何修改 docker-compose.yml 的环境变量?
原因:修改环境变量后,需要重启容器才能生效,但直接在 1Panel 界面操作有时容易遗漏。
解决:进入 1Panel → 容器 → 编排,找到你的 anheyu 编排,点击编辑,修改环境变量后保存,1Panel 会自动应用更改并重启服务。或者你也可以直接修改服务器上的 .env 文件,再在 1Panel 界面中重建应用。
六、最终效果验证
配置完成后,你可以做两个测试:
正常访问:打开你的博客文章,图片应该正常显示。
盗链测试:复制一张图片的完整 URL,在浏览器的无痕模式中直接打开。此时因为 Referer 为空,且你设置了“禁止空 Referer”,所以应该返回 403 Forbidden。
七、总结
现在的安全配置如下:
| 配置项 | 状态 | 作用 |
|---|---|---|
| 存储空间访问控制 | 私有 | 杜绝公开访问 |
| CDN 回源鉴权 | 已开启 | 允许 CDN 拉取私有空间文件 |
| CDN Referer 防盗链 | 白名单 + 禁止空 Referer | 只允许博客域名访问 |
| CDN HTTPS | 已开启 + 有效证书 | 避免混合内容拦截 |
| Anheyu 存储策略私有空间 | 已开启 | 生成带签名的临时链接 |
这套配置基本可以防止绝大多数恶意刷流量和盗链行为。当然,如果以后遇到更高级的攻击(比如伪造 Referer),还可以考虑开启 时间戳防盗链 或配置 IP 黑白名单,不过对于个人博客来说,目前已经足够安全了。
希望这篇博客能帮你少踩一些坑。如果你也使用 Anheyu + 七牛云,照着配一遍,应该就能安心使用啦。
博客框架:Anheyu-app
我的博客:南夕桥

