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 也有,这样的话就可以兼顾境内外的用户访问了