DeepSeek 的官网是一个很典型的双 CDN 加速的场景,当我们使用 IT-Dog 对其发起多地 Ping 的时候,可以看到国内使用的是华为云的服务,国外则使用的是 Cloudflare 的服务:itdog.cn/ping/deepseek.com

在实际的建站过程中,很多的恶意网络攻击都来自于海外,如果都使用国内的 CDN 来抗的话,流量和请求费用会变得十分高昂,而 Cloudflare 则提供了免费的 CDN 服务,而通过 Cloudflare SaaS 功能,我们可以在不切换 nameserver 的情况下将我们的服务接入到 Cloudflare 中,从而为海外用户也提供高质量的服务

Cloudflare SaaS 接入原理

Cloudflare for SaaS 的核心是使用 CNAME 方式来接入客户域名,其主要流程如下:你先将一个域名接入到 Cloudflare 中,为这个域名开启 Custom Hostnames 服务,之后使用 CNAME 的方式,将业务域名接入到 Cloudflare 中

一旦配置好后,Cloudflare 将接管来自业务域名的流量,并将其导向 Cloudflare 的边缘节点,为其提供服务

整体流程概括

用户访问  →  DNS 查询(找出 IP) →  连接 Cloudflare 边缘节点  →  转发流量给源站
    |
  app.client.com
    ↓
[client 的 DNS 提供商]
    ↓
CNAME → client.yoursaas.com
    ↓
[Cloudflare 的 DNS 记录]
    ↓
返回 Cloudflare 边缘节点 IP(Anycast)
    ↓
用户连接 Cloudflare,Cloudflare 处理流量

用户在浏览器中输入业务域名 app.client.com,之后 DNS 提供商返回 CNAME 结果为接入到 Cloudflare 的域名 client.yoursaas.com,之后返回 Cloudflare 的 DNS 记录,之后用户连接到 Cloudflare 的边缘节点,Cloudflare 处理流量

Cloudflare 在这个过程中成为了 app.client.com 的边缘代理,处理了它的流量

如何处理其中的 SSL 和域名所有权验证

Cloudflare 提供了一种叫做「Cloudflare Custom Hostnames + ACM(Advanced Certificate Manager)」的解决方案,你需要添加两条 TXT 记录,用来验证所有权和申请 SSL 证书,申请到的 SSL 证书不会下发给用户,而是直接部署到 Cloudflare 的边缘节点,之后业务上线之后了用户直接访问即可生效

SaaS 接入之后如何设置 WAF 或者缓存

SaaS 接入之后,直接使用业务域名即可,比如说我这里接入的域名为:pic.juniortree.com,我直接在 Cache Rules 里面添加就可以了,和常规的域名是一样的

在对应的 WAF 事件里面也可以看到来自 pic.juniortree.com 的记录

如何接入

具体可以参考这篇文章:实现网站国内外分流(境外接入 Cloudflare) | 半方池水半方田

在 Cloudflare 的域名中,你需要添加「回退源」,也就是最终 Cloudflare CDN 的回源

在 SSL/TLS 中,选择「自定义主机名」,添加回退源为刚刚解析到源服务器的 IP 的域名

之后添加「自定义主机名」为你想接入的域名,之后在想接入域名的 DNS 管理商添加两条 TXT 记录,我这里接入到是阿里云

有效之后,我们需要将业务域名 CNAME 到 Cloudflare 的回退源,我这里将境外解析到 Cloudflare 的回退源,境内解析到腾讯云的 CDN,这样的话就完成了「双 CDN 加速 + 智能调度」

最终实现了全绿,一片好形势啊

并且也可以看到,境内外解析出来的 IP 不同,也实现了分流

存在的问题

因为我的原站在国内,Cloudflare 的边缘节点回源拉取速度很慢,导致国外的用户在初次访问本站的时候没有缓存,速度很慢,这个我还在想办法解决,比如说将图床的服务器迁移到香港去,这样的话腾讯云的 CDN 也有边缘节点,Cloudflare 也有,这样的话就可以兼顾境内外的用户访问了

最后修改:2025 年 04 月 14 日
如果觉得我的文章对你有用,请随意赞赏