华为云分流解析 + 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管理页面, 申请证书并保存