oynix

于无声处听惊雷,于无色处见繁花

CloudFlare免费加速GithubPages

这个网站是托管在GithubPages上的,源网址是:https://oynix.github.io,如果不能翻墙,很难保证每次都能正常打开。经过几个小时的折腾,我给它套上了CloudFlare,现在就算不翻墙也可以直接访问这个网站了。

新网址是:https://oynix.net

1. 域名

既然使用CloudFlare,那么一个域名就是必不可少的,这是唯一一个需要花钱的地方。不同的后缀价格有所不同,便宜的一年甚至只需要十几块钱,贵的则上不封顶。

按照地域划分,域名服务商可以分为两种,一种是国内的,如阿里云、腾讯云等;还有一种就是国外的,数量上就有很多很多,这里就不推荐了,建议多对比几家,选个价格划算的。

国外的域名服务商基本都不需要实名认证,买来就可以用,而国内的现在基本都需要实名认证,有的可能还需要备案,举着身份证拍拍照片、录录视频。当下国内的互联网环境可能是过去的十年里最差的一年,这是一个无奈的消息,但好消息是,这可能是未来十年最好的一年。

2. DNS服务器

虽然我们访问的是一个字符串格式的域名,但传输数据的TCP协议中,使用的却是IP地址,所以就需要先把域名转换成IP地址,即域名解析,这个事情就是DNS服务器在做。至于域名对应什么IP,则是域名拥有者在域名服务商那里配置的。

3. 添加DNS记录

打开域名服务商的后台,找到添加DNS记录的页面,为刚刚买的域名添加一条CNAME类型的记录,主机名写www,目标主机名就是GithubPages托管的地址,这个Pages的设置页面可以看到,比如我的就是:oynix.github.io,设置好保存即可。

这条记录的意思是,当访问www.oynix.net时,会解析到oynix.github.io

4. 设置Pages的定制域名

找到托管网站的仓库,打开仓库的设置页面,在左边找到Pages选项卡,里面有一个可以设置Custom Domain的地方,将买的域名填进去,如下图。

在点击Save按钮后,Github会自动监测填入域名的DNS,也就是检查一下访问这个域名时,域名解析服务器到底能不能给解析到username.github.io来,如果可以,就会通过,通过之后,就可以把下面的Enforce HTTPS勾选上了。这时可以看到,仓库的根目录下,多了一个名字是CNAME的文件,里面就是我们刚填的域名。

至此,Pages就设置完成了。

5. 设置CloudFlare

添加站点

登录到网站主页,如果没有账号,就先免费注册一个。个人主页上会显示已经添加过的站点,如果没添加过则是空的,点击右上角的「添加站点」,把买来的域名加进去。

选择付费计划

下一步会让选择付费计划,不同的价格对应不同的服务,最下面有个Free的,选这个就可以了,除此之外还有Pro、Business和Enterprise,如果有需要,也可以按需选择。

替换域名服务器

这一步,CloudFlare会提供两个域名解析服务器的地址。域名解析这件事,是在域名解析服务器上做的,每个域名服务商都有自己的域名解析服务器,CloudFlare自身也是个域名服务商。如果想通过CloudFlare加速网站访问,那么就需要让CloudFlare接管域名解析这个事。

具体的操作方式是,用CloudFlare提供的域名解析服务器,替换掉购买域名的服务商的域名解析服务器。打开域名服务商的后台,找到域名服务器地址管理页面,删掉现有的,把CloudFlare提供的复制进去,即可。

此时,我们就可以在CloudFlare里管理域名的DNS记录了。在我们进行这步操作的同时,CloudFlare可能已经把原有的DNS记录扫描并添加进去。

添加A记录

上面我们已经添加过一条类型是CNAME的DNS记录,主机名是www,意思是现在可以解析这个域名:www.oynix.net。

但我们日常输入地址时,为了方便,会直接输入根域名。为了可以直接解析根域名,我们也可以为根域名添加DNS记录。根域名的主机名用@表示,按理说,直接再添加一条CNAME,同样也指向oynix.github.io即可。

在CloudFlare中,这么设置是可以的,它会自动拉平。但是不推荐,对于根域名,推荐的方式是添加类型是A的DNS记录,也就是将根域名指向某个IP地址,根据Github的文档,Pages的服务器有4个IP地址,将每一条分别加到DNS记录里即可

1
2
3
4
185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153

开启SSL/TSL

在左边,可以看到一个SSL/TSL的选项卡,打开之后,可以看到如下的内容

如果选择的不是最后一个:完全(严格),英文是:Full(Strict),那么则需要选中它。否则,可以会遇到一个多次重定向的问题,导致网站打不开。如果加密,则使用https,如果不加密,则使用的是http。

如果设置了不加密到源服务器的请求,当我们访问https://oynix.net时,CloudFlare接收到请求后,会请求源服务器,即oynix.github.io,因为设置了不加密,所以会使用http的方式,但是Pages里设置了Enforce HTTPS,这个请求就会重定向到https,客户端便会再次请求https,导致重复上面这个过程,不停的重定向,导致无法打开网站。

6. 添加CNAME文件

上面提到过,当在Pages设置Custom Domain后,会在仓库根目录生成一个CNAME文件,但是我是通过Hexo管理这个静态网站,包括生成和部署,部署过一次后,远程仓库的这个文件就没有了,所以需要在本地生成一个,具体的路径是:

1
blog/source/CNAME

CNAME是一个纯文本文件,内容就是域名,例如我的便是:oynix.net

至此,所有的操作都完成了。

附录

A、CNAME、AAAA的区别

DNS记录,英文名是DNS Records,这三种是常用到的

  • A:Address,指向一个IPv4的地址
  • AAAA:Address,指向一个IPv6的地址
  • CNAME:Canonical Name,指向一个主机域名
------------- (完) -------------
  • 本文作者: oynix
  • 本文链接: https://oynix.com/2023/08/46171706eb65/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

欢迎关注我的其它发布渠道