华为云分流解析 + Cloudflare SaaS:实现网站全球加速,提升国内外访问体验与SEO排名
Cloudflare For Saas 可以让你将Cloudflare之外的域名接入Cloudflare, 享受其CDN服务, 并且可以自选IP, 加速国内访问, 本文以一个接入Cloudflare的域名作演示
准备
必须要有至少一个域名并接入Cloudflare, 并且开通Cloudflare for Saas服务(免费但需要绑定Paypal或者信用卡)
接入Saas
设置DNS解析, 可以使用A AAAA CNAME解析
解析的内容为你的服务器IP, 名字可以随意, 但不要是自己要接入Saas的域名

SSL/TLS->自定义主机名->添加自定义主机名, 根据如图配置

复制TXT解析配置, 回到DNS, 设置CNAME和TXT解析


设置DCV委派, 来到自定义主机名界面, 复制Cloudflare提供提供的域名(每个人都不一样)

接着回去设置CNAME记录, 记录名 _acme-challenge.你的自定义主机名 记录值 你的自定义主机名.你自己的字符.dcv.cloudflare.com

设置优选域名
等到主机名状态显示为有效时, 如图修改DNS为优选域名后保存


推荐的优选域名
time.is
ip.skk.moe
cloudflare.182682.xyz
csgo.com
使用华为云+Cloudflare SaaS实现国内外分流解析
教大家如何使用华为云来进行国内外分流解析
下文的CF即Cloudflare
分流解析的原因
尽管我们使用了CF SaaS加速网站, 但是因为CF糟糕的国内线路, 导致国内用户无法流畅访问
并且由于CF优秀的国际线路导致我们无法舍弃掉它, 所以我们就可以通过CF SaaS+分流解析来使国内用户走国内优化CDN, 国外用户走CF CDN
准备阶段
本文是在前文的基础上写的, 请先阅读前文来保证您能够正常配置
一个Cloudflare账户(需开启SaaS服务), 一个华为云DNS账户, 一个托管在Cloudflare的域名, 一个国内优化CDN(本文以DokiCDN为例)
托管子域名到华为云
打开我们的Cloudflare DNS管理页面, 为子域名添加NS记录, 并等待解析完成
ns1.huaweicloud-dns.com.
ns1.huaweicloud-dns.cn.
ns1.huaweicloud-dns.net.
ns1.huaweicloud-dns.org.

与此同时, 打开华为云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 修改为你自己的, 点击保存部署(如果是手机操作, 一定要在粘贴之后将最后一行的两个符号删除)
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const url = new URL(request.url)
if (url.pathname.startsWith('/.well-known/acme-challenge/')) {
const targetUrl = `http://cdn.yourcdn.com${url.pathname}${url.search}` //修改为你的CDN分配的域名
const modifiedHeaders = new Headers(request.headers)
modifiedHeaders.set('Host', 'xxx.333375.xyz') //修改为你的网站的域名
const modifiedRequest = new Request(targetUrl, {
method: request.method,
headers: modifiedHeaders,
body: request.method !== 'GET' && request.method !== 'HEAD' ? request.body : null
})
try {
const response = await fetch(modifiedRequest)
const modifiedResponse = new Response(response.body, {
status: response.status,
statusText: response.statusText,
headers: response.headers
})
return modifiedResponse
} catch (error) {
return new Response('Proxy Error: ' + error.message, {
status: 502,
statusText: 'Bad Gateway'
})
}
}
return new Response('Not Found', {
status: 404,
statusText: 'Not Found'
})
}
保存并退出后点击 设置->添加域和路由->路由, 添加路由 xxx.333375.xyz/.well-known/acme-challenge/* 并将 xxx.333375.xyz 修改为你自己的, 然后点击添加路由


之后回到CDN管理页面, 申请证书并保存
