Loading... 介于网络坏境不同,很多人有需求在保留国内域名 DNS 服务器不改变的情况下,还能接入国外服务商比如 CloudFlare 的服务,使得国内外都能有较好的网络使用感受,以前通过 CloudFlare Partner 来实现 CNAME 接入的方式已经失效,目前有两种新方案可以复活 Cloudflare 的 CNAME 接入。 ## 通过 SaaS 从 2021 年 11 月开始,CloudFlare 禁用了 Partner 使用的 `zone_set`API 以避免滥用(因为该 API 接入不需要验证域名所有权),通过 Partner 实现 CNAME 接入的方式近乎落幕,仅剩 Plesk 空间存量的 `ServerShield by Cloudflare` 插件订阅能够正常接入。几个月过去了,官方也并没有对未来合作伙伴如何进行接入新域名给出任何解释。 错过了 Partner 的时代,官方的 CloudFlare for SaaS 也提供了一种更灵活的 CNAME 接入方式,一起来看看吧。 ### 功能简介 CloudFlare for SaaS 不是个新功能,这里单独拿出来讲,主要是几天前 CF 调整了一波免费额度。过去是每个域名收取 2USD/ 月的费用,现在不仅提供 100 个域名免费额度,而且超额后每个域名按 0.1USD/ 月收取费用,非常良心。 > **官方公告:https://blog.cloudflare.com/waf-for-saas/** CloudFlare 中一个完全接入的域名即为一个 `zone`,点进去包括套餐、安全等等都是针对这一主域名配置的。官方 SaaS 功能针对的是你服务的客户,开放这项功能允许使用他们自己的域名直接附加在你的 `zone` 里,享受你 `zone` 包含的安全、加速等功能。  说起来可能不是很直白,这里举几个应用场景的例子: > ★**应用场景 1**:`a.com` 通过 NS 接入了 CF,`b.com` 未接入 CF;可以通过 SaaS 功能实现 `1.b.com`/`2.b.com` 等直接附加在 `a.com` 上,通过 CNAME 指向 CF 的节点。 > > ★**应用场景 2**:`a.com` 通过 Plesk 接入了 CF,具有免费的 Plesk Plus 版本,`b.com` 未接入 CF 或使用的免费版;可以通过 SaaS 功能实现 `1.b.com`/`2.b.com` 等直接附加在 `a.com` 上,享受 `a.com` 域名下的 ECC+RSA 双证书、页面规则、高级防火墙权益。 简而言之,可以通过这项功能,实现其他域名的 CNAME 接入以及对 `zone` 权益的共享,有兴趣的话,接着往下看吧~ ### 配置接入 #### 订阅 CloudFlare for SaaS 打开一个域名,选择【SSL/TLS】下的【自定义主机名】,点击【启用 CloudFlare for SaaS】后根据指示绑定外币卡或者 PayPal,订阅 CloudFlare for SaaS 功能。  CloudFlare for SaaS 订阅本身是针对整个计费账户的,所以通过 Partner 接入的域名出现【请联系客户成功经理以启用适用于 SaaS 的 SSL】时,只需要选择个通过官方 NS 激活的域名启用订阅后即可使用。这里猜测可能是 Partner 接入的商务权限交给了合作伙伴,方便下放优惠和服务那些,我们绕过去就行了。  激活页面中文翻译比较滞后,从英文的可以看到免费额度已经进行更新,可以放心使用。  #### 设置源站 选择一个承载的域名 `zone` 点进去,依然是【SSL/TLS】下的【自定义主机名】,首先要设置附加上域名的源站。在这之前要在承载的域名 `zone` 中设置一个子域名作为源站的来源,比如 `origin.a.com`,在 Partner 或者官方 DNS 设置好它的源站(注意是是在 CF 里添加,和正常添加网站的流程一样)。  SaaS 这里的源站叫回退源(Fallback Origin),输入刚才设置的子域名并点击【Add Fallback Origin】,它会同步这个子域名设置的源站作为后续在此接入域名的源站。有些人就会问了,这样设置那不是后续 SaaS 添加的所有其他域名就只能用同一个源站了?答案确实是这样,为每个 SaaS 域名自定义源站需要 Enterprise 以上套餐,有多域名需求多开几个 zone 吧(苦笑)。  #### 添加自定义主机名 后续的工作就很简单了,点击【添加自定义主机名】,输入你要添加的未在 CF 接入的子域名。建议直接选择 TXT 验证,因为除了证书还有另一条 TXT 记录要添加,一起加上去比较方便。  #### 验证域名所有权 添加完成后,按要求解析证书和主机名两个 TXT 记录,解析生效后 10 分钟左右即可验证通过,到此这个 SaaS 域名就正确的添加到了你的 `zone` 中并接入了 CF。  特别提醒,如图这里 CF 给出的验证 TXT 名称是应完整域名的解析记录,所以在自己的第三方 DNS 配置的时候,填入的主机名应当是 `example` 和 `_cf-custom-hostname.example`,如果直接复制框内的内容把根域名 `b.com` 填进了主机名全域就变成了 `example.b.com.b.com` 了,是错误的。配置完成之后你可以通过直接复制的域名来检查 TXT 记录是否匹配,推荐 MySSL 的工具。 #### SaaS 域名解析 添加进去的 SaaS 域名,CF 并不会给你提供明确的 CNAME 供指向。如果是官方接入的可以直接 CNAME 到你刚刚设置的源站域名比如 `origin.a.com`,通过 Partner 接入的直接解析到源域名对应的 CNAME 比如 `origin.a.com.cdn.cloudflare.net` 即可。其他的配置比如分线路解析、自选 IP 就可以按照自己的喜好去设置了,在此不过多赘述。 此外,对于防火墙规则、页面规则,直接将添加进的域名输入其中即可圈定范围,完成对于其细则的设置。 --- CloudFlare for SaaS 是官方提供的一项非常方便的免费功能,弥补了早期未通过 Partner 接入只能强制 NS 接入的缺憾。有官方保障、灵活 CNAME、免费的优点,也有源站不灵活等缺点,肯定还是不如已经通过 Partner/Plesk 接入的域名灵活。 ## 通过 Cloudflare pages function 1、首先去 https://github.com/xyTom/cf-page-func-proxy 下载或是 Fork 该仓库 2、修改该仓库 _worker.js 中的 url.hostname 为你需要反代的网址或是需要 cname 接入,自选 ip 的地址 3、然后打开 Cloudflare Dashboard,进入 Pages 管理页面,选择创建项目,如果在第一步中选择的是 fork 本仓库,则选择 1 Connect to Git,如果第一步中选择的是下载本仓库则选择 2 Direct Upload  ### 绑定自定义域名 * 进入 Cloudflare Pages 管理页面,选择刚刚创建的 Pages 项目,点击名称进入项目设置页面  * 选择页面中的自定义域选项卡 * 在页面中输入需要绑定的域名,并点击继续,这里的域名可以是子域名 * 在设置方法中选择开始 cname 设置  * 按照页面给出的说明去 DNS 服务提供商处修改 DNS 解析记录,即可完成自定义域名绑定  稍等一会,等待解析生效后就可以通过绑定的域名访问了,通过这种方式绑定的域名是 cname 接入,理论上可以自选 ip。 最后修改:2023 年 01 月 11 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏