【CloudFlare】官方免费CNAME接入教程

发布于 / 信息应用 / 66 条评论

从2021年11月开始,CloudFlare禁用了Partner使用的zone_setAPI以避免滥用(因为该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包含的安全、加速等功能。

说起来可能不是很直白,这里举几个应用场景的例子:

应用场景1a.com通过NS接入了CF,b.com未接入CF;可以通过SaaS功能实现1.b.com/2.b.com等直接附加在a.com上,通过CNAME指向CF的节点。

应用场景2a.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的工具(点击前往)。

经过测试,不论以何种方式验证并签发证书,只要保持SSL正确指向CloudFlare,系统就能够在到期前一个月自动为你续期证书,无需进行手动的操作。相应的,SaaS页面Certificate validation method也会变成HTTP Validation

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接入的域名灵活。

最后要感谢CF提供这样的免费功能,希望未来能够下放自定义源站的功能(想桃子),也欢迎大家在评论区分享你们对这项功能的其他应用方式,一起学习交流吧~


*原创文章,转载请注明出处

转载原创文章请注明,转载自: Luminous' Home » 【CloudFlare】官方免费CNAME接入教程

  1. The hostname is using Cloudflare and cannot be activated with an TXT or HTTP validation token. To activate the custom hostname, the DNS target needs to point to the SaaS zone请问出现这个怎么解决?主机名错误,我用了两个二级域名都托管在cf,

    1. @土豆萨哈 要通过SaaS接入的域名NS不能托管在CF
  2. 按照这个顺序来弄,没有报任何错误,证书状态有效,主机名状态有效,但是自定义的主机名就是返回ssl证书无效,最近这个问题弄两天了,有没有遇到同样问题的

    1. @docker 不太清楚你这个问题出在哪里,你描述的还是比较模糊,建议找个操作过的直接上你的账户帮你看看
  3. 经过测试,不论以何种方式验证并签发证书,只要保持SSL正确指向CloudFlare,系统就能够在到期前一个月自动为你续期证书,无需进行手动的操作。相应的,SaaS页面Certificate validation method也会变成HTTP Validation。

    这个续签自己不用操作了吗

    1. @zuozihan 不需要操作,这个流程会在到期前30天完成
  4. 烦请问一下

    ★应用场景1:a.com通过NS接入了CF,b.com未接入CF;可以通过SaaS功能实现1.b.com/2.b.com等直接附加在a.com上,通过CNAME指向CF的节点。

    我如果需要购买 pro 计划 那我应该买在哪个域名上面

    1. @haige 购买的Pro加在NS接入的域名上面,Business以上就不需要了直接能够开启CNAME支持。
  5. 我想问一下,我添加了txt解析记录,但是始终提示待验证怎么办
    custom hostname does not CNAME to this zone.

  6. 试了一下,没成功。
    Cloudfalre: a.com
    aliyun: b.com
    个人猜测主要原因是 a.com使用A记录指向了阿里云服务器的IP,但我在nginx中并未配置这个a.com,所以我b.com 通过CNAME解析到a.com时,提示301 moved。

    1. @堆上小栈 A域名只将其解析记录作为回退源共享给B,其他包括源站绑定都与A无关。B目标是指向CLOUDFLARE的IP,不止是简单的CNAME到A,要检查一下A当前是否解析的是CLOUDFLARE的IP。
      1. @Luminous 谢谢,已经解决了,我遇到的问题是没有开启严格模式。
  7. 大佬,请教一下,我要是验证完成了,把那两条TXT删除了,之后会在到期前自动续签成功吗?谢谢

    1. @小熊 是的,会转成HTTP验证方式自动续期
  8. 博主你好!saas接入添加自定义主机,怎么实现www和不带www的接入呢,比如我的域名,baidu.com,我网站设置了www和不带www,那添加自定义主机的时候怎么添加进去,求指点。

    1. @妮不懂 需要对每一个域名单独添加,并不能在www下包含@
  9. 有个小疑问,在只有一台服务器的情况下,境外走 Cloudflare CDN 的话,那么 Nginx 获取的来源 IP 应该是 CF 的 IP 了吧,虽然 CF 提供了 CF-Connecting-IP 标头用来传递真实 IP,此时又要加一层判断 IP 是否是 CF 的,感觉就很麻烦了…请问 @Luminous 大佬是怎么解决这个问题的呢

    1. @ATP 原来 Cloudflare 有公布 CDN IP...那就没问题了(´▽`)
      1. @ATP 是的,通过https://www.cloudflare.com/ips-v4就可以获得
  10. 需要两个域名才可以实现吗

    1. @主机测评 是这样,在同一个zone下会因为DNS设置冲突出现问题
  11. 你好,问下那现在这个example.b.com的设置,比如缓存优化啥的,是回到主页的 b.com 里去设置?还是会变成这个zone下面的设置?

    1. @Google 会继承所依附的zone的各种设置,不需要回去设置
      1. @Luminous 那这样的话,就很麻烦了,旧的相当于不能新增,得在新的不用的域名下设置东西,然后如果要改得两边一起改。然后如果还有其他域名,就乱了。555
  12. 我想继续 看到博主的文章,可是并没有发现rss,也不能注册,那如何知道更新了文章?有其它有推送功能的位置吗?如推特,微博等,个人站是自由,不过也可以兼顾推送的优点,让那些平台当推送订阅功能就是了。网站也没有通知功能样,不是说非要,只是想表达,没有任何功能来发现文章更新,可能 是我没发现,博客的相关功能还了解的不多。所以问下,希望了解如何接收到文章更新的消息。

    1. @进化 你可以从这里订阅本站的RSS:https://luotianyi.vc/feed,电报也有部分bot收录了这个rss。并没有准备其他的订阅渠道,因为本身更新很鸽……