Cloudflare R2 图床配置

Cloudflare R2 图床配置

Lucas

购买域名

作用:

  1. Cloudflare 域名做加速/防止 r2.dev 限速 (r2.dev 是公共开发 URL , 允许任何人通过 r2.dev URL 查看存储桶内容. 此 URL 有速率限制. 诸如 Access 和 Caching 等 Cloudflare 功能不可用.)
  2. 用自己的域名, 将来换存储、换 CDN、加速方案调整, 只需要改 DNS 解析, 文章一个字都不用动. 用厂商域名, 一旦要迁移就得全仓库 sed 替换 + 重新部署, 而且历史快照、别人转载的文章里的链接全废.
  3. cloudflare 域名价格大约是 10 美元一年, 相当合适, 续费不涨价.

很简单, 在 cloudflare 里搜你想要的域名然后付款就行.

用你的域名打开博客

1. 在域名配置 DNS Records

Type:CNAME Name:blog Target:DarkFlameMasterDev.io

打开 Proxied 显示橙色云朵图标

2. 配置 github

在 github 的个人主页的设置里选 pages, add a domain

填写你的域名, 比如 blog.darkflamemaster.org

然后他会让你添加一个 DNS Record

Add a DNS TXT record

就去 Cloudflare 添加就行

DNS Record.png

然后去你的 github.io 的仓库

点击仓库的设置, pages -> Custom domain

填入你的域名 blog.darkflamemaster.org

一开始可能会 DNS 不通过, 因为你的域名配置有延迟, 等 2 个小时后再配置也行.

配置成功候你的仓库会出现一个 CNAME 的文件, 为了避免下次部署博客的时候这个文件被覆盖, 把这个文件放进你的博客里
hexo 就放在 source 里

3. 配置 WAF 规则

配置防盗链: 防止别人直接访问你的域名 (防盗链 / Referer 白名单)

配置 Web Application FireWall

创建自定义规则

切换表达式输入

1
2
3
4
5
6
(http.host eq "img.darkflamemaster.org"
and http.referer ne ""
and not starts_with(http.referer, "https://blog.darkflamemaster.org")
and not starts_with(http.referer, "https://darkflamemasterdev.github.io")
and not starts_with(http.referer, "http://localhost:")
and not starts_with(http.referer, "http://127.0.0.1:"))

Then take action… 选 block

其他默认

这样就可以只允许你的域名和 github.io 还有本地的预览 才能访问你的图床, 防止别人将你的图片链接复制到别的地方, 偷用你图床的流量.

4. 配置 SSL/TLS

进入 Domain -> SSL/TLS -> Overview -> 点击 Configure
Cloudflare 默认应该是 Full

我改成了 Full (strict) 这个还会检查指向网站的证书, 也就是 github 的证书, 可以有效防止中间人利用伪造证书进行攻击.

由于我们前面 WAF 规则设置的都是 https 协议

所以我们需要在 Edge Certificates 勾选 Always Use HTTPS, 否则当使用 http 协议的时候, 就会无法加载图片.

5. 配置缓存

If incoming requests match… 选择 Custom filter expression

表达式填写 (starts_with (http.host, “img.darkflamemaster.org”))

Then… Cache eligibility 选 Eligible for cache

Edge TTL 选多久都行 我选的 6 个月

浏览器 TTL 我选的 1 个月

保存

部署 R2 存储

Cloudflare R2 是 Cloudflare 提供的"对象存储 (Object Storage)"

类似于一个放在云端的超大硬盘, 但它特别适合存图片、视频、文件, 然后通过互联网访问.

找到 Storage & databases -> R2 Object Storage

选择 Create Bucket (桶)

地区选离你近的, 我选择 APAC

Default Storage Class: 选标准方便频繁访问

创建成功后点进去, 设置 Custom Domains 填写 img.你的域名 保存的时候会提示你创建 DNS Record 他会自动帮你创建.

DNS Records 最终展示

DNS Records 最终展示.png

回到上一层, 我们创建一个 API token 来访问这个 Bucket

User API Token 就行

里面的权限后期可以改, 我觉的选 Admin Read & Write 也没啥问题

TTL 选 永久

并且直接选择了 Apply to all buckets in this account (including newly created buckets)

注意要保存下来里面的所有 最终生成的信息, 离开这个页面就再也看不到了

然后 Cloudflare 的工作就结束了

配置 PicGo 或 PicList

我用的 PicList

我感觉都那么回事, 开源免费的体验都不会特别好, 只能说是配置好了很方便

里面选 AWS S3 (PicGo 需要额外安装插件)

信息照着填写就行, 别的都默认.

将 AWS S3 选为默认, 并且开启高级重命名

输入 {y}{m}{d}{md5-16}{filename} 就可以了

picList的坑
  1. picList 3.5.0 相册功能是本地建立一个 json 文件 (看似是一个 db 但是实则是一个 gzip 压缩的 json)用来展示已经上传和删除的云端文件, 他无法同步远程的文件 ---- 也就是说他的改变只能因为本地操作而改变, 如果云端删除或者添加资源, 是无法同步的, 因此我强烈建议打开删除云端的开关按钮, 并且以后都只在这里进行文件删除和上传, 并且不使用重命名功能
    picList删除云端.png
  2. picList 3.5.0 云端管理功能意思是远程控制云端的资源, 相当于一个不用打开网页浏览器的第三方管理界面.
    在你填写了诸多 token 之后, 需要进入然后填写你的自定义域名, 就是一开始的 https://img.你的域名
    云端控制自定义域名.png
    但是这个功能我不经常用, 基本都是在相册操作, 保持图床整洁
  • 标题: Cloudflare R2 图床配置
  • 作者: Lucas
  • 创建于 : 2026-09-01 08:43:40
  • 更新于 : 2026-09-25 13:24:29
  • 链接: https://darkflamemasterdev.github.io/2026/09/01/Cloudflare-R2-图床配置/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论