记一次博客图床迁移至 Cloudflare R2 存储桶的分享心得

好久不见!自从上一篇文章发布几周以来,好像没有什么让我值得记的东西,就想着要不要继续给博客修缮修缮(?),于是想起来可以给图床做个迁移。正好笔者之前开了张银行卡,它是支持绑定海外付款方式的,也就让我有了迁移图床的动机,顺便写成文章分享出来。
盘点此前用过的图床方案
外部公益图床
互联网上有许许多多由民间自主搭建的公益性的图床,它们免费的范围差不多都是 “每账户 10 GB,单图片最大 10 MB” ,对于小型博客站点来说够用了,超限也提供 VIP 套餐解锁更多服务与容量,且费用会用于服务器续费与维护。但缺点是,大陆某些图床为了节省流量成本,会屏蔽海外流量,导致海外访客(也可能是为了隐私使用了 VPN 代理工具的大陆访客)ERR_CONNECTION_REFUSED/ECONNREFUSED,服务器拒绝/阻挡了来自海外 IP 的流量),同时这些公益图床也面临着服务器被攻击、站点到期、运营跑路等风险。对于一个 Blogger 来说这些容错都算致命的,作为一位小 Blogger 不应该将媒体的命运掌握在他人之手,这种意识也应该要记牢。
ImgTP, ImgUR, ImgChr (路过图床) 等 下三滥的垃圾 图床,若不是评论区有友情人士反馈他估计会继续用下去😂(乐
Picx (一个基于 GitHub 仓库的图床托管方案)
PicX 是基于 Github 仓库和 cdn 加速的免费图床工具。通过 Github 授权 PicX 仓库管理权限(包含 GitHub OAuth 授权登录 和 填写 GitHub Token 登录 这两种方式),PicX 通过 Github API 管理 Github 仓库(也就是我们的图库),提供了图片压缩、自定义命名、自定义水印等功能,简单且免费。
看了这则介绍你也会发现其中的风险:
- 整个媒体存储都基于 Github 代码仓库托管
- 图床管理都统一使用 picx.xpoet.cn 这个网址,走 Github OAuth/Token 授权,这符合第三方托管工具的性质,说白了就是这个工具的作者只要自己想,就可以掌握所有用了它提供的图床工具用户的仓库权限!
- 外链使用 Github RAW 链接,jsDelivr,或者不知名的国内加速 CDN (也许是 Picx 作者整的),非常容易遭到风控导致抽风
- 强制使用
picx-image-hosting作为仓库名,默认不做文件夹分类,提交图片都会直接放入仓库根目录同时生成仓库 commit 消息,容易污染账号 commit 记录,且终究算是一种滥用,万一账号/仓库访问有问题也容易丢失所有图片
笔者以为“躲得了初一”,却还是“躲不过十五”,看起来就像从一个坑跳到了另一个坑罢了。要完完全全掌握博客媒体资源的权利,还得笔者自己探索探索。
Cloudflare R2 存储池
要介绍 CF R2 图床方案,先了解一下什么是对象存储 (OSS)?
对象存储(英语:Object storage)是一种计算机数据存储架构,它将数据作为对象进行管理,与其他存储架构不同(如文件系统将数据作为文件层次结构进行管理,而块存储则将数据作为扇区和轨道内的块进行管理)。每个对象通常包括数据本身、数量不等的元数据和一个全局唯一的标识符。对象存储可以在多个层面实现,包括设备层面(对象存储设备)、系统层面和接口层面。在每一种情况下,对象存储都试图实现其他存储架构所不具备的能力,如可由应用程序直接编程的接口,可跨越多个物理硬件实例的命名空间,以及数据管理功能,如数据复制和对象级粒度的数据分发。
Cloudflare R2 是近几年最受欢迎的对象存储服务之一,也是很多开发者替代 Amazon S3 的首选。它最大的优势是免流量出口费用(Zero Egress Fee),无论下载多少数据,都不会产生传统对象存储常见的流量费用。同时兼容 S3 API,可直接替换大多数 S3 客户端。官方免费额度包括 10GB 存储空间以及每月大量免费 API 请求,对于个人博客、图床、静态网站已经十分充裕。
适合人群:
- WordPress 网站
- 静态网站托管
- 图片 CDN
- AI 数据存储
以下是 Cloudflare R2 核心定价与免费额度参考:
| 类别 | 内容 | 免费额度 | 超出部分费用 |
|---|---|---|---|
| 存储 | 存储空间 | 10GB/月 免费可存5万张2MB图片 | 每增加 1GB 收费 $0.015 美元(约 $15/TB) |
| A 类操作 | 上传、列出 | 100 万次/月 免费每天3.3万次 | 每增加 100 万次 收费 $4.50 美元 |
| B 类操作 | 下载、读取 | 1000 万次/月 免费每天33万次 | 每增加 1000 万次 收费 $0.36 美元 |
| ⏬ 出口流量 | 访问数据时的流量 | 全免 | 无任何费用 |
迁移契机
其实我很早就了解到赛博大善人 Cloudflare 所提供的 R2 对象存储方案,非常适合作为图床服务使用。But,它的条件不仅是你拥有 Cloudflare 账号,还要求你需要绑定由全球性卡组织 (Visa, MasterCard 等) 发行的银行卡 或者 绑定 PayPal,显然大陆的银联是不可行的,这也成为享受/使用该服务的最大阻力。
以前网上一大堆 R2 白嫖教程都要求你找一个虚拟卡或者生成一个不存在的卡号骗过系统,但这种 “灰色路径” 是绝对不可控的,你使用别人 早已用烂的“共享信息” ,也会导致你账号 被限制甚至封号!
为了白嫖 CF 赛博菩萨的馈赠,想用着“不烧心”,无数大陆网友逐渐探索了不少低门槛开全球银行卡的办法: 招商万事达人民币普卡(Debit,Platinum),工行 VISA 星座卡(Credit,Platinum),建行万事龘白金卡(Credit,Platinum) 等等。但这些卡放到现在对于学生来说开卡门槛高了 (大陆的法律规定银行不能给在读大学生开信用卡的,一般都是毕业有工作了才可以开,并且对卡等级也有要求),虽然用卡免年费但开卡收工本费,即使开卡成功也是 0 额度的。
话还没完。就在 2026 年 8-9 月,中国银行宣布推出万事达哔哩哔哩2233联名借记卡,卡 BIN 为 223300,特点是境内走万事网联受理,境外走万事达网络。它是境内首张以 2 数字开头的万事达借记卡,线上预约制卡可自己定制卡号后六位。
除了「可以定制卡号」,这张卡在权益上就是一张普卡(Standard):免年费、免账户管理费、免境内 ATM 查询 / 取现手续费,2026 年底前免收开卡工本费。
中行 2233 万事达卡的推出可谓是大大降低了非银联卡开卡的门槛,笔者自 8 月份开始一直关注这个活动,9.22 日线上开放预约我立刻定制完卡号盼着这张卡寄到网点,苦等了一个月,终于在 10 月底前往市分行营业部网点领到了。🎉

有了这张万事达卡,不仅仅方便了我们使用 CF 的任何服务,也会让境外在线支付变的更便捷,以后海淘、挖煤这些都靠这张卡“闯天下”啦!
注意回过神来,本篇文章只是分享图床搭建经历而不是银行卡推销,如需了解更多信息请看这个友情链接
搭建过程
参考链接:
- 从零开始搭建你的免费图床系统 (Cloudflare R2 + WebP Cloud + PicGo) - 少数派
- 用 Cloudflare R2 自建图床:从建桶到预签名直传的完整实战 | Magic Tools
- 搭建免费高速图床 CLoudFlare R2 +PicGo方案 - 工程师焱记 - 博客园
- 关于 Cloudflare R2 Storage 的使用体验测评和我的观点 - 博客文章 - 任霏的个人博客网站
- Cloudflare R2 白嫖指南:10G存储+免流量费,打造免费图床 - 知乎
由于我操作的时候忘记在一些地方截图了,网上的图又很老 (毕竟 CF 已经大改网站 UI 好几次了),一些步骤只能无配图文字说明,望见谅!
添加支付信息
在 dash.cloudflare.com 仪表盘页面侧边栏找到 Build - Storage & databases - R2 Object Storage 并点击,如果从来没有使用过会提示您添加付款信息,如果您刚好手上有一张 VISA / MasterCard 银行卡,就在银行卡信息栏目填入您的 卡号、有效期、CVV 安全码、国家/地区 以及 邮政编码 等信息。接着在下方账单邮寄地址栏目自行填入你的基础信息,根据输入框的提示填写即可(姓氏、住址、国家/地区、省/自治区/直辖市、城市、账户类型(个人/公司) 等)。
个人是不推荐走 PayPal 绑定的,因为这玩意儿太容易封号了,还不如直接走卡组织的网络比较方便)
创建存储桶
在 R2 Object Storage 页面,点击 Create bucket,填写存储桶名称,位置选择 亚太地区 或者 北美洲西部 (这个看自己喜好了,访问速度都差不多的,我是选择了亚太),默认存储类保持选择 标准 (不能选不频繁访问,它没有免费额度)。
点击蓝色的创建按钮之后就完成了!这时候就可以直接在页面上上传和删除等操作。

自定义域名
在存储桶页面点击 Settings,在 Custom Domains 添加自定义域名,如果你的域名刚好也托管在 CF,则会为您自动配置 DNS 记录,创建完等待初始化完成就可以使用该自定义域名访问图床资源了。
图床基本防护
设置缓存规则
设置这个主要是为了进一步防止被刷下载次数 (虽然也基本没人去刷CF的R2),先进入域名管理界面,然后在侧边栏进入 Rules - Page Rules,新建缓存规则,名字自己定,照着我图里面配即可。
其中:
- URL:要带https,后面接 /*
- 浏览器缓存 TTL:1天
- 边缘缓存 TTL:1个月(也可以适当降低,如果你经常更换图片的话)
- 缓存级别:缓存所有内容
- 源服务器缓存控制:添加但不开启!
这样缓存规则就设置完毕了!

设置速率限制
虽然说 R2 的免费额度对于小型博客站点来说足够使用,但遭到恶意刷流就会超额产生不必要的扣费开销。为了防止这类恶意请求,这时候我们就要为图床设置速率限制了。
在域名界面侧边栏点击 Security - Security rules,在 Rate limiting rules 新建规则,依旧照着图中的信息跟着配。
其中:
- 规则名称:随意
- 字段:URL路径、包含、/
- 当速率超过…:100,10秒钟
- 然后采取措施…:阻止
这里重点是【当速率超过…】这个选项,推荐100甚至更多一点,不建议填写太低,很容易误伤;意思是同一个 IP 10 秒内请求超过多少张图片,就触发操作(按照你站点图片情况设置)

防盗链 (可用可不用)
这个东西我还不太弄得明白,话确实是下面说的那样,但配完之后却直接给我锁外面了(无论什么 IP 都会被 Block),大家自己看着办吧)
这个可以按需添加,主要是防止别的网站盗用你的图床的图片,在别的网址引用图床链接就会提示错误,但是直接请求的方式就还是能打开!
点击 Security - Security rules,新建 Custom rules,依旧参考图片配置:

其中:
- 主机名:包含, (图床域名)
- And:右边添加一个 And
- 引用方:不包含,(你的博客域名)
- 然后采取措施…:阻止
添加 S3 访问 API
回到 R2 主页面,点击右下角 Manage API Tokens,进入后点击 Create User API token。
输入令牌名称,「权限」选择 “Object Read & Write” 并将此 API 指定之前所创建的 Bucket,这样最小化权限也保障数据安全,其余选项保持默认即可。
完成创建后会显示所有密钥,我们接下来使用的 PicGo 需要的是下面三个信息,不过因为只会显示一次,建议在密码管理软件或其他地方妥善保管好这些参数信息。
至此,我们需要在 Cloudflare R2 上配置的部分就完成了,接下来我们需要配置 PicGo 客户端。
接入 PicGo 图床上传客户端
PicGo 是一个用于快速上传并获取图片 URL 的工具软件,有着较为丰富的插件生态,支持多种图床服务,可以下载对应平台客户端使用。
安装好这个软件之后,软件界面是这样子的,由于原版软件本体没有直接加入对于 S3 协议图床的配置,所以先点击插件页面,搜索 s3 第一个出来安装该插件即可。


接着点击图床列表,点击 Amazon S3 - 新建配置,命名,然后填写配置项。

这里有几项配置需要尤其注意。
- 应用密钥 ID,填写 R2 API 中的 Access Key ID(访问密钥 ID)
- 应用密钥,填写 R2 API 中的 Secret Access Key(机密访问密钥)
- 桶名,填写 R2 中创建的 Bucket 名称
- 文件路径,上传到 R2 中的文件路径,我选择使用 {fileName}.{extName} 来保留原文件的文件名和扩展名。
- 自定义节点,填写 R2 API 中的「为 S3 客户端使用管辖权地特定的终结点」,即 xxx.r2.cloudflarestorage.com 格式的 S3 Endpoint
- 自定义域名,填写之前配置的自定义域名
其他配置保持默认即可,确认参数无误后点击「确定」与「设置为默认图床」即可。
如果您想要整理好图床路径,可以添加 rename-file2 插件,配置文件(路径)格式为: {y}/{m}/{d}/{hash:8:0}-{origin}-{rand:6}

该插件遵守以下命名规则:
- {y} 年,4位
- {m} 月,2位
- {d} 日期,2位
- {h} 小时,2位
- {i} 分钟,2位
- {s} 秒,2位
- {ms} 毫秒,3位(v1.0.4)
- {timestamp} 时间戳(秒),10位(v1.0.4)
- {hash:<length>:<start>},文件的md5值;length表示截取长度,start表示起始位置,默认分别为32和0,示例:{hash:8<0>0>}、{hash<8>8>}、{hash}
- {origin},文件原名(会去掉后缀)
- {rand:<count>}, 随机数,<count>表示个数,默认为6个,示例:{rand<32>32>}、{rand}
- {localFolder:<count>}, <count>表示层级 ,默认为1,示例:{localFolder<6>6>}、{localFolder}
有了这个开源图床管理工具,极大的方便了我们上传图片到 Cloudflare R2 存储池的过程!对于博客图片资源的管理也高枕无忧了!
总结
这次的博客修缮工作圆满地以成功为尾声!有了赛博大善人CF的给予,咱插入图片也不会有太大的心理压力了,媒体资源的管理权也牢牢掌握在了笔者的手中!我非常期待未来这个充满阳光希望的站点又迎来新的焕发与生机!
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!













