前言#
这个博客是托管于 Github Page 的,所以在国内的一些地区访问速度很慢甚至直接没法正常访问,所以我尝试了使用一些方法来解决这个问题。
介绍#
我使用的方法中最核心的东西就是 CDN (Content Delivery Network) 即内容分发网络。大致原理就是将我们的源网站的内容给分发到许多地区的许多服务器上面(所以 CDN 也可以防止自己网站的源 IP 被发现)。那么我们就可以通过 CDN 将我们的 Github Page 的内容分发到国内的服务器上面。
思路大致就是将国内外的 DNS 解析线路分为两条——国内和国外。国内解析到 CDN 上面,而国外直接访问 Github Page
当然你也可以选择直接使用 Cloudflare 的解析代理来实现,但是 Cloudflare 在国内的访问速度也不是很理想。这里可以看看下面几张对比图:
从上面对比可以明显看出使用双线 DNS + CDN 是几乎全球都解析最快的方案。而直接访问 Github Page 在很多地区出现了访问超时的问题。Cloudflare 虽然只有个别地区访问超时但是国内大部分地区访问速度很慢。
准备#
- 你的 Github Page 地址(例如我的:
hetongre4per.github.io
) - 一个国内的 CDN (因为我加入了又拍云联盟,所以使用的是免费的又拍云 CDN)
- DNSPod 帐号(或者其他的 GeoDNS)
- 另一个 DNS 服务商(我这里是 Cloudflare,并没有 GeoDNS 功能。你也可以只使用 DNSPod)
- 一个已经备案的域名(似乎国内 CDN 都需要,我的就是本站的域名
hetong-re4per.com
)
开始#
配置 CDN#
首先我们需要配置好自己的 CDN。打开又拍云的控制台,在主界面(总览)中可以找到「CDN」这个基础产品,直接选择「创建服务」(点击这里直接跳转)。
服务名称随意,加速域名填入你自己的已经备案的域名,应用场景选择「全站加速」。
源站配置这里需要注意,你需要知道你的 Github Page 给你分配的 IP,你可以使用 ITDog 的多地 Ping 工具来获取。例如我的就可以看出来 Github 给我分配的 IP 是 185.199.108.153
、185.199.109.153
、185.199.110.153
和 185.199.111.153
。然后回到又拍云,回源协议选择「https」,源站证书校验「关」。接下来直接将你的四个 IP 分别填入源站地址就行。
创建完毕后进入到对应的 CDN 控制台,找到「回源管理」,然后在下面的「回源 Host」中填入你的 Github Page 地址。(注意:如果你修改了Github Page 地址就填你修改后的这个地址,例如我在 Page 中填的www.hetong-re4per.com
这里也要填这个)
接下来你需要为你的 CDN 申请 SSL 证书(似乎是必须的,不然访问会一直有问题)。在又拍云的「总览」-「增值服务」中找到「SSL 证书服务」(点击这里直接跳转)。选择「申购证书」:
证书品牌 | 证书类型 | 有效期限 | 证书域名类型 | 域名数量 |
---|---|---|---|---|
Let’s Encrypt | 域名型(DV) | 自动续签 | 单域名证书 | 1 个 |
然后按照要求补全信息并添加 CNAME 验证后等待证书审核和颁布。
颁布下来之后在你的 CDN 的管理面板中找到「HTTPS」,在「HTTPS配置」项点击「管理」。开启 https 访问并强制 https 访问即可。
回到 CDN 的「域名管理」,复制「CNAME
」备用。
配置多线 DNS#
因为我的网站是托管在 Cloudflare 上面的,所以想要使用 DNSPod 的多线解析需要将域名解析到 DNSPod 上。但是 DNSPod 支持解析子域名,所以我用了一个小技巧可以不用将我的整个域名解析到 DNSPod 上。
首先在 DNSPod 中添加你的子域名,例如我的「www.hetong-re4per.com
」。然后进入域名的管理面板,找到「解析设置」,这里面会给你两个 DNS 服务器地址,复制下来为下一步准备。
打开你自己根域名的 DNS 托管商,添加以下解析规则(DNSPod 给的两个都加上):
类型 | 名称 | 名称服务器 | TTL |
---|---|---|---|
NS | www (这里填你自己的第三级) | 你在 DNSPod 上给你分配的 DNS 服务器 | 默认 (自动) |
添加完后刷新 DNSPod 的网页就可以发现成功开始解析了。(如果没成功等几分钟点击一下状态这一项的「暂停」然后按要求验证就行)
成功后就在 DNSPod 中添加两条规则:
主机记录 | 记录类型 | 线路类型 | 记录值 | TTL |
---|---|---|---|---|
@ | CNAME | 境内 | 填入你在你的 CDN 服务商拿到的 CNAME 地址 | 默认(600) |
@ | CNAME | 境外 | 填入你的 Github Page 地址。例如我的 hetongre4per.github.io | 默认(600) |
接下来等待解析记录生效即可,你可以使用 ITDog 的多地 Ping 工具来检查是否生效。
这个就是我的最终成果,希望你也可以成功配置自己的 CDN。