使用华为云+Cloudflare SaaS实现国内外分流解析
在上一篇文章 使用Cloudflare Saas加速网站访问 中, 我们顺利使用了Cloudflare For SaaS来加速我们的网站, 这篇网站教大家如何使用华为云来进行国内外分流解析
下文的CF即Cloudflare
分流解析的原因
尽管我们使用了CF SaaS加速网站, 但是因为CF糟糕的国内线路, 导致国内用户无法流畅访问
并且由于CF优秀的国际线路导致我们无法舍弃掉它, 所以我们就可以通过CF SaaS+分流解析来使国内用户走国内优化CDN
, 国外用户走CF CDN
准备阶段
本文是在前文的基础上写的, 请先阅读前文来保证您能够正常配置
一个Cloudflare账户(需开启SaaS服务), 一个华为云DNS账户, 一个托管在Cloudflare的域名, 一个国内优化CDN(本文以DokiCDN为例)
托管子域名到华为云
打开我们的Cloudflare DNS管理页面, 为子域名添加NS记录, 并等待解析完成
1 | ns1.huaweicloud-dns.com. |
与此同时, 打开华为云DNS, 创建公网域名xxx.333375.xyz
这样就算是托管完毕
配置CDN
打开我们的CDN后台, 我们以DokiCDN的GoEdge
系统为例
首先添加网站, 源站是你回源域名
解析的值, 完成之后会给出一个你需要CNAME解析的域名
然后来到华为云添加记录, 设置分流解析, 中国大陆解析到国内优化CDN
, 境外解析到回源域名
配置自动化SSL
配置CF的自动SSL
在前文中配置了DCV委派
, 我们由于将NS修改到了华为云, 所以我们需要重新添加CNAME记录
配置GoEdge的自动SSL
本小段教程仅针对GoEdge等
仅支持http验证
的系统, 如果你的CDN系统支持DNS账户验证
, 建议直接使用DNS账户验证
由于GoEdge系统仅支持http验证申请证书, 并且我们仅在境内解析了DokiCDN, 而Let’s Encrypt
验证http的服务器在国外, 所以在以上条件结合下我们需要特殊的配置来申请证书
我的解决方案是通过CF Workers路由
来验证
首先打开Cloudflare的Workers, 点击创建Workers
然后编辑代码, 记得将 cdn.yourcdn.com
和 xxx.333375.xyz
修改为你自己的, 点击保存部署(如果是手机操作, 一定要在粘贴之后将最后一行的两个符号删除)
1 | addEventListener('fetch', event => { |
保存并退出后点击 设置->添加域和路由->路由, 添加路由 xxx.333375.xyz/.well-known/acme-challenge/*
并将 xxx.333375.xyz
修改为你自己的, 然后点击添加路由
之后回到CDN管理页面, 申请证书并配置
总结
用户访问流程:
flowchart LR
用户浏览器-->yourdomain.com
yourdomain.com--国外用户-->CF-CDN--回源-->origin.yourdomain.com-->服务器
yourdomain.com--国内用户-->优化CDN-->服务器
服务器--返回内容-->用户浏览器
SSL验证服务器-->yourdomain.com/.well-known/acme-challenge/1234-->Workers路由--Host:yourdomain.com-->cdn.yourcdn.com/.well-known/acme-challenge/1234
cdn.yourcdn.com/.well-known/acme-challenge/1234-->SSL验证服务器