把图片、视频等静态资源放在 Cloudflare R2 上,成本和维护都很省心,但国内访问 R2 自定义域名时,速度有时并不理想。除了 Worker Route,Cloudflare 还提供了另一种更轻量的方式:Cloud Connector。

它的思路和 Worker 优选类似:Cloud Connector 负责回源,DNS 负责选路。不需要写 Worker 代码,也能让 R2 的请求走国内访问更快的 Cloudflare 边缘节点。

本文只讨论公开静态资源加速。第三方优选域名和非官方 DNS 配置存在稳定性与合规风险,请自行评估。

这次演示会用到两个域名:

  • test.jiumi.de5.net:绑定到 R2 的源站域名,保持橙云;
  • linshir2.jiumi.de5.net:对外访问域名,之后用灰色 CNAME 指向优选域名。

前者负责回源,后者负责选路。

一、原理

整条链路可以分成四步:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
┌──────────────────────────────────────────────┐
│ 浏览器发起请求 │
│ Host / SNI:linshir2.jiumi.de5.net │
└──────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────┐
│ DNS 选路 │
│ 灰色 CNAME → yg8.ygkkk.dpdns.org → 优选 IP │
└──────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────┐
│ Cloudflare 边缘 │
│ TLS / SNI 与 Host 仍是 linshir2 │
└──────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────┐
│ Cloud Connector 回源 │
│ 匹配 Host,改写为 test.jiumi.de5.net │
└──────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────┐
│ R2 存储桶返回对象 │
│ 源站域名保持橙云,只负责绑定 R2 │
└──────────────────────────────────────────────┘

其中,DNS 只负责返回较快的边缘 IP,不会改变地址栏或 Host;Cloud Connector 在请求到达边缘后匹配对外域名,再把 Host 改写为 R2 源站域名。

一句话总结:对外域名负责选路,Cloud Connector 负责回源,源站域名负责绑定 R2。

R2 自定义域名的 DNS 记录通常由 Cloudflare 管理并保持橙云,不能直接拿来做灰色优选 CNAME,所以要拆成两个域名:test.jiumi.de5.net 绑定 R2,linshir2.jiumi.de5.net 负责对外访问。

二、绑定 R2 自定义域名

1. 选择需要加速的存储桶

进入 R2,选择需要加速的存储桶。

在 R2 存储桶列表中选择需要加速的存储桶

2. 绑定源站域名

在存储桶的 Settings → Custom Domains 中绑定一个自定义域名,例如:

1
test.jiumi.de5.net

等待状态变为 Active。这条记录保持橙云,不要关闭代理。

为 R2 存储桶绑定源站自定义域名

三、配置 Cloud Connector

1. 创建 Cloud Connector

进入域名管理页面,找到 规则 → Cloud Connector。

Cloudflare 域名规则菜单中的 Cloud Connector 入口

点击“创建 Cloud Connector”。

Cloud Connector 规则列表与创建按钮

2. 选择云存储提供商

选择 Cloudflare R2。

选择 Cloudflare R2 作为云存储提供商

3. 选择存储桶和域名

选择需要加速的存储桶,以及刚绑定的源站域名 test.jiumi.de5.net。

选择 R2 存储桶和已绑定的源站域名

这里要选择绑定到 R2 的源站域名,不要选成对外访问域名。

4. 配置匹配条件

配置传入请求的匹配规则:

  • 字段:主机名
  • 运算符:等于
  • 值:linshir2.jiumi.de5.net

它表示只有访问 linshir2.jiumi.de5.net 的请求,才会被 Cloud Connector 转发到 R2。

配置主机名等于对外访问域名的匹配条件

5. 部署规则

确认配置后,选择 忽略并继续部署规则。

部署 Cloud Connector 规则时的确认提示

这里忽略的是 Cloudflare 自动创建代理记录的提示,不是忽略规则本身。如果它已经为 linshir2.jiumi.de5.net 创建了橙云记录,需要先删除,否则后面的灰色 CNAME 可能无法生效。

四、配置对外 DNS

进入 DNS → Records,为对外访问域名添加一条 CNAME 记录:

类型 名称 目标 代理状态
CNAME linshir2 yg8.ygkkk.dpdns.org 仅 DNS(灰云)

代理状态必须关闭。保存后等待 DNS 生效。

添加指向优选域名的灰色 CNAME 记录

五、验证配置

访问一个真实存在的对象,例如:

1
https://linshir2.jiumi.de5.net/演示地址.png

也可以使用命令行检查:

1
2
dig +short linshir2.jiumi.de5.net
curl -I https://linshir2.jiumi.de5.net/演示地址.png

如果返回 HTTP/2 200,且 content-type 是图片类型,说明请求已经成功回源到 R2。访问根路径返回 404 通常是存储桶里没有 index.html,属于正常现象。

六、注意事项

  • yg8.ygkkk.dpdns.org 是第三方优选域名,可用性和安全性不受你控制,不建议用于关键生产业务。
  • Cloud Connector 目前仍是 Beta 功能,控制台界面和规则行为可能变化。
  • R2 存储桶必须公开可读,不要用它存放隐私文件或密钥。
  • 如果需要回退,可以删除对外 CNAME,把 linshir2.jiumi.de5.net 直接绑定为 R2 自定义域名,恢复官方直连方式。

配置完成后,建议在不同运营商网络下多测几次,不要只凭一次访问结果判断加速效果。