跳过正文

使用双线 DNS 和 CDN 加速你的 GitHub Page

·1728 字·4 分钟· loading... · ·
技术教程 Github Page CDN 多线 DNS 建站
褐瞳さん
作者
褐瞳さん
Everyone is mania in general
目录
自建博客 - 这篇文章属于一个选集。
§ 5: 本文

前言
#

这个博客是托管于 Github Page 的,所以在国内的一些地区访问速度很慢甚至直接没法正常访问,所以我尝试了使用一些方法来解决这个问题。

介绍
#

我使用的方法中最核心的东西就是 CDN (Content Delivery Network) 即内容分发网络。大致原理就是将我们的源网站的内容给分发到许多地区的许多服务器上面(所以 CDN 也可以防止自己网站的源 IP 被发现)。那么我们就可以通过 CDN 将我们的 Github Page 的内容分发到国内的服务器上面。

思路大致就是将国内外的 DNS 解析线路分为两条——国内和国外。国内解析到 CDN 上面,而国外直接访问 Github Page

当然你也可以选择直接使用 Cloudflare 的解析代理来实现,但是 Cloudflare 在国内的访问速度也不是很理想。这里可以看看下面几张对比图:

github直连
Github Page直连

Cloudflare
Cloudflare

双线 DNS + CDN
双线 DNS + CDN

从上面对比可以明显看出使用双线 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 可以在互联网上查找对应的教程。

首先我们需要配置好自己的 CDN。打开又拍云的控制台,在主界面(总览)中可以找到「CDN」这个基础产品,直接选择「创建服务」(点击这里直接跳转)。

服务名称随意,加速域名填入你自己的已经备案的域名,应用场景选择「全站加速」。

源站配置这里需要注意,你需要知道你的 Github Page 给你分配的 IP,你可以使用 ITDog 的多地 Ping 工具来获取。例如我的就可以看出来 Github 给我分配的 IP 是 185.199.108.153185.199.109.153185.199.110.153185.199.111.153。然后回到又拍云,回源协议选择「https」,源站证书校验「关」。接下来直接将你的四个 IP 分别填入源站地址就行。

获取源站 IP

源站设置

创建完毕后进入到对应的 CDN 控制台,找到「回源管理」,然后在下面的「回源 Host」中填入你的 Github Page 地址。(注意:如果你修改了Github Page 地址就填你修改后的这个地址,例如我在 Page 中填的www.hetong-re4per.com这里也要填这个

Github Page 地址

接下来你需要为你的 CDN 申请 SSL 证书(似乎是必须的,不然访问会一直有问题)。在又拍云的「总览」-「增值服务」中找到「SSL 证书服务」(点击这里直接跳转)。选择「申购证书」:

证书品牌证书类型有效期限证书域名类型域名数量
Let’s Encrypt域名型(DV)自动续签单域名证书1 个

然后按照要求补全信息并添加 CNAME 验证后等待证书审核和颁布。

颁布下来之后在你的 CDN 的管理面板中找到「HTTPS」,在「HTTPS配置」项点击「管理」。开启 https 访问并强制 https 访问即可。

开启 CDN https

回到 CDN 的「域名管理」,复制「CNAME」备用。

配置多线 DNS
#

因为我的网站是托管在 Cloudflare 上面的,所以想要使用 DNSPod 的多线解析需要将域名解析到 DNSPod 上。但是 DNSPod 支持解析子域名,所以我用了一个小技巧可以不用将我的整个域名解析到 DNSPod 上。

首先在 DNSPod 中添加你的子域名,例如我的「www.hetong-re4per.com」。然后进入域名的管理面板,找到「解析设置」,这里面会给你两个 DNS 服务器地址,复制下来为下一步准备。

打开你自己根域名的 DNS 托管商,添加以下解析规则(DNSPod 给的两个都加上):

类型名称名称服务器TTL
NSwww (这里填你自己的第三级)你在 DNSPod 上给你分配的 DNS 服务器默认 (自动)

Cloudflare NS 记录

添加完后刷新 DNSPod 的网页就可以发现成功开始解析了。(如果没成功等几分钟点击一下状态这一项的「暂停」然后按要求验证就行)

DNSPod 添加成功

成功后就在 DNSPod 中添加两条规则:

注意线路类型,是不同的两条线
主机记录记录类型线路类型记录值TTL
@CNAME境内填入你在你的 CDN 服务商拿到的 CNAME 地址默认(600)
@CNAME境外填入你的 Github Page 地址。例如我的 hetongre4per.github.io默认(600)

接下来等待解析记录生效即可,你可以使用 ITDog 的多地 Ping 工具来检查是否生效。

这个就是我的最终成果,希望你也可以成功配置自己的 CDN。

自建博客 - 这篇文章属于一个选集。
§ 5: 本文

相关文章

使用 Github Action + Hugo 实现推送仓库自动生成静态文件并推送到 Page 仓库
·2927 字·6 分钟
技术教程 Github Page Github OpenWrt
如何使用 Github Page 搭建自己的博客
·4630 字·10 分钟
技术教程 Github Page Hugo
使用 Clooudflare R2 + Cloudreve 构建属于自己的云盘
·2455 字·5 分钟
技术教程 Cloudflare Cloudreve 个人云盘 建站