O2O 是一种特定的流量路由配置,其中流量经过两个 Cloudflare zone:第一个 Cloudflare zone 由客户 1 拥有,第二个 Cloudflare zone 由客户 2 拥有,客户 2 被视为 SaaS 提供商。
如果一个或多个主机名加入了将 Cloudflare 产品(特别是 Cloudflare for SaaS 产品)作为平台一部分使用的 SaaS 提供商,这些主机名将在 SaaS 提供商的 zone 中创建为自定义主机名。
要授予 SaaS 提供商通过其 zone 路由流量的权限,任何自定义主机名都必须由您(SaaS 客户)通过在权威 DNS 上放置 CNAME 记录 来激活。如果您的权威 DNS 是 Cloudflare,您可以选择代理 CNAME 记录,从而实现 O2O 设置。
- O2O 仅在两个 zone 属于不同 Cloudflare 账户时适用。
- 由于 O2O 基于 CNAME,当使用 A 记录指向 SaaS 提供商时不适用(apex proxying)。
如果您拥有自己的 Cloudflare zone(example.com),且该 zone 包含与自定义主机名(mystore.example.com)匹配的已代理 DNS 记录,且 CNAME 目标由 SaaS 提供商定义,则将启用 O2O。
example.com 的 DNS 管理
| Type(类型) | Name(名称) | Target(目标) | Proxy status(代理状态) |
|---|---|---|---|
CNAME |
mystore |
customers.saasprovider.com |
Proxied |
启用 O2O 后,您 Cloudflare zone 中配置的设置将首先应用于流量,然后 SaaS 提供商 zone 中配置的设置将其次应用于流量。在 SaaS 提供商拥有的 zone 中,HTTP 标头将被设置为 cf-connecting-o2o: 1。
flowchart TD accTitle: O2O-enabled traffic flow diagram A[Website visitor] subgraph Cloudflare B[Customer-owned zone] C[SaaS Provider-owned zone] end D[SaaS Provider Origin] A --> B B --> C C --> D
当流量通过 O2O 配置时,Cloudflare 会在进入 SaaS 提供商 zone 的请求上设置 HTTP 标头 cf-connecting-o2o: 1。没有 API 字段或 zone 设置指示 O2O 是否处于活动状态——这是由客户 DNS 配置决定的按请求路由行为。
您可以在源站服务器或 Cloudflare Worker 中检查此标头,以识别 O2O 流量并应用特定逻辑。
如果您没有自己的 Cloudflare zone,而只是将一个或多个主机名加入了 SaaS 提供商,则不会启用 O2O。
未启用 O2O 时,SaaS 提供商 zone 中配置的设置将应用于流量。
flowchart TD
accTitle: Your zone using a SaaS provider, but without O2O
A[Website visitor]
subgraph Cloudflare
B[SaaS Provider-owned zone]
end
C[SaaS Provider Origin]
A --> B
B --> C