利用腾讯 CDN 给 Github Pages 全站加速

给静态 Github Pages 配置 CDN 的文章不少,但是我都不怎么能看懂,也没有配置成功,于是根据自己理解,写了自己的方法。适用于腾讯包括在内的 CDN 服务商。

前言

其实倒不是追求速度有多快,因为都是一些 HTMl 和一些 CSS 文件,没啥图片,整个速度还行,但是在做 SEO 的时候遇到了不少问题, 在 Goolge Search Console 始终无法提交站点地图,一个月来尝试多次也没有成功,于是就开始是怀疑 Github Pages 的原因。

于是尝试把网站仓库文件放在 VPS 上,然后花了一些时间配置七牛云的 CDN ,尝试提交站点地图,成功提交,并且一天内已经收录了。于是实锤是 Github Pages 的原因了,于是就开始琢磨加一个 CDN ,看能不能成功,于是就有了这篇 文.

基本概念理解

  • CDN

内容分发网络(英语:Content Delivery Network 或 Content Distribution Network,缩写:CDN)是指一种透过互联网互相连接的计算机网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、影片、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。

大致可以理解是给你的文件在各个地方放一个镜像,用户就近选择服务器,以增加访问速度,提升用户体验
CDN 还可以用于隐藏服务器真实地址、防 DDOS 等。

  • 加速域名
    用户访问的网址,在浏览器输入的网址。

  • 源站
    你存放网站文件的地方, CDN 服务商拿取文件的地址,可以是域名,也可以是 IP。

  • 回源
    当用户访问加速域名时,CDN 的服务器中没有这个文件, CDN 服务器就会回到你的源站(你的大本营)拿取文件,这个过程就叫回源。

  • 回源 HOST
    CDN 在回源过程中,以什么头部,可以看作是一个门牌,CDN 服务器拿着这个门牌到你的“大本营”找文件地址。(例如我的 VPS 上部署有 www.a.comwww.b.com 两个网站,CDN 在回源过程中就会先找到你的大本营的地址(源站),拿着门牌,找到应该拿取的文件。例如回源 host 时 a.com 那么他就会去 a.com 对应的地址拿取文件。)

配置

  1. 确定一个加速域名,例如本博客的 hexo.bwoywan268.xyz , 将此域名填写到 Github Pages 的 custom domains 中。同时此域名也是你 CDN 的加速域名。

  2. 源站填写 your_name.github.io 也就是 Github Pages 的默认域名,当然也可以填 IP 但是不推荐,如果 IP 变了呢
    回源 host 填写你的加速域名(也是你 Github 的自定义域名)

这样做的原理嘛。我自己理解就是 DNS 实质就是将这个加速域名指向 Github 然后 Github 根据请求携带的 Host 信息,来确认提供谁的文件,那么就可以近似把 CDN 当作一个 DNS 解析,加速域名通过你的 DNS 指向你的 CDN 服务商,你的服务商在回源的时候携带“门牌”向 Github 要文件。而在 Github 配置自定义域名的作用仅仅是来给 CDN 来提供一个门牌。

  1. 要把加速域名指向 CDN 的服务器,就必须把加速域名解析到 CDN 服务商提供的 CNAME 上。
    到这基本就结束了,关于 Https 证书的配置。就比较简单了。请听下回分解

后记

Https 加速一般没有免费额度吧,并且这样配置后,全部流量都会走 CDN ,开销也会比较大,对于 CDN 没有覆盖的地方也比较头疼,暂且没找到什么好的方法。