用 Cloudflare R2 搭免费图床:10GB 存储 + 零出口费 + 防盗链

图床选型绕不开一个坑:存储便宜,流量贵。传统对象存储存储费没几个钱,图片一旦被外链盗用,出站流量费能给你干到怀疑人生。

Cloudflare R2 的杀手锏是出站流量免费(zero egress):每月 10GB 存储、100 万次 A 类操作、1000 万次 B 类操作,个人图床用不完。

数据怎么流

R2 图床的访问链路

你(客户端/S3 API)→ R2 Bucket → 绑定的自定义域名走 Cloudflare CDN → 访客。图片从最近的边缘节点出,快,且不计出站费。

操作步骤速览

图床搭建步骤

一、建 Bucket 并绑域名

步骤 1:建 Bucket 并绑定域名

面板 → R2 → Create bucket,起个名,比如 img。进 Bucket → Settings → Public access → 连接一个自定义域名(比如 img.example.com),域名要托管在同一个 Cloudflare 账号下。

别用 R2 自带的 r2.dev 测试域名——那个有速率限制,只适合临时验证。

二、用 rclone 批量上传

步骤 2:rclone 批量上传

rclone config
# 选 n (new) -> 存储类型选 s3 -> provider 选 Cloudflare
# 填 access key / secret / endpoint: https://<accountid>.r2.cloudflarestorage.com

rclone copy ./images r2:img --progress

本地当图床用、S3 兼容、还能写进脚本自动传——这是 R2 比纯图床省心的地方。

三、防盗链

步骤 3:配置防盗链

两种做法,按需求选:

① Cloudflare 的 Referer 规则(零代码):Security → WAF → 自定义规则,加一条——当 Referer 不来自你自己的域名时,Block。适合绝大多数场景。

② Worker 校验签名:图片 URL 带时效签名,过期即失效。适合付费内容、私域资料。前者够用就不要上后者。

四、顺手把缓存设好

步骤 4:给图片设长缓存

R2 经自定义域名走的是 Cloudflare CDN,给图片加一条缓存规则:Cache Rules → 匹配 img.example.com/* → Edge TTL 设为一个月。图片是静态资源,长缓存能让命中率飙到 90% 以上。

小结

图床的账要算两笔:存储和流量。R2 把流量那笔直接抹平了,剩下的 10GB 存储对个人站几乎是白送。预算被流量费吃掉的痛,只有被吃过一次才知道。

唯一的门槛是自定义域名要托管在 Cloudflare——如果你本来就用它做 CDN,这一步等于没有成本。

常见问题

R2 真的没有出口流量费吗?

是的,R2 出站流量免费,这是它相对传统对象存储最大的区别;只对存储量和操作次数计费。

可以用 r2.dev 的测试域名吗?

只建议临时验证。r2.dev 域名有速率限制,正式使用要绑定托管在同一 Cloudflare 账号下的自定义域名。

相关阅读

上一篇 Cloudflare Cache Rules 实战:把 WordPress 首页 TTFB 压到 100ms 以内
下一篇 Docker 部署 Uptime-Kuma,接入飞书机器人告警