注册freenom免费域名

https://www.freenom.com/en/index.html

我们熟知的免费域名,有.tk,.ml,.cf。.tk域名是南太平洋岛国托克劳的顶级域名,.ml则是马里的顶级域名,.cf则是中非共和国的域名,不过搜索引擎基本上已经不收录了,虽然这些域名和.cn其实没什么区别。以前这些免费域名都是分开注册的,后来都被托管到了freenom,更加方便大家的注册。不过先在freenom也办法直接注册了,当你注册的时候会显示如下:

image-20210311231105623

建议先用google登录!然后寻找自己想要的域名。

image-20210311231131960

接着去结账

image-20210311232743765

接下来可以看到自己已经申请成功。

image-20210311232920762

接下来选择我们要设置的域名,比如说.tk,点击manage domain。

image-20210313211509151

后续需要先进行Cloudflare方面的设置。

Cloudflare

https://dash.cloudflare.com/

登录后添加站点

image-20210313212659363

选择0美元的继续

image-20220313223551976

接下来进行添加DNS记录

image-20210313212840605

添加2条类型为CNAME的记录,名称分别为@和www,分别进行保存,如下

image-20210313213144831

接下来显示我们还需要做的事情,就是到我们的注册机构,也就是freenom中更改名称服务器。

image-20210313213309448

回到freenom设置我们的名称服务器

image-20210313213521211

再回到cloudflare中,进行检查。

image-20210313213631282

是的,接下来就收到了邮件。

image-20210313222840472

回到cloudflare

image-20210313222942285

Github仓库Settings

找到GitHub Pages项。

输入刚才申请的域名如tsuiwade.tk,点击保存。下面那个HTTPS证书会在你保存域名后自动帮你申请,不过可能最长需要24小时才能申请成功。

如果上面的步骤都完成后,等待一会,在浏览器的地址栏输入新增域名,应该就可以跳转到你的博客页面了。

image-20210311233633554

image-20210313223613784

本地CNAME文件

这是困扰了我很多天的问题,在于每当我重新提交代码的时候,我的博客仓库中的站点域名又被清空为原先的.github.io域名,而非自己在Custom domain中填写的其他域名。

如果需要将域名指向另一个域名,再由另一个域名提供 IP 地址,就需要添加 CNAME 记录。

A记录是解析域名到IP,CNAME是解析域名到另外一个域名。

A记录

A记录,即Address记录,它并不是一个IP或者一个域名,我们可以把它理解为一种指向关系:域名 http://www.xx.com → 111.111.111.111 主机名 DD → 222.222.222.222

也就是当你访问这些域名或者主机名的时候,DNS服务器上会通过A记录会帮你解析出相应的IP地址,以达到后续访问目的。所以A记录是IP解析,直接将域名或主机名指向某个IP。

CNAME

CNAME记录,也叫别名记录,相当于给A记录中的域名起个小名儿,比如http://www.xx.com的小名儿就叫http://www.yy.com好了,然后CNAME记录也和A记录一样,是一种指向关系,把小名儿http://www.yy.com指向了http://www.xx.com,然后通过A记录,http://www.xx.com又指向了对应的IP:

http://www.yy.comhttp://www.xx.com → 111.111.111.111

这样一来就能通过它的小名儿直接访问111.111.111.111了。

这时候有人问:这不多了一步嘛,不嫌麻烦?

假如这个时候我又想给原域名取几个小名儿,分别叫http://www.cc.comhttp://www.kk.com那么存在下列指向关系:

http://www.yy.comhttp://www.xx.com → 111.111.111.111

http://www.cc.comhttp://www.xx.com → 111.111.111.111

http://www.kk.comhttp://www.xx.com → 111.111.111.111

突然服务器的IP地址因为一些不可描述的原因要换了,不再是111.111.111.111了,换成了333.333.333.333,这时候你发现,只要把http://www.xx.com的指向修改一下即可:

域名 http://www.xx.com → 333.333.333.333

这时候你又发现了,原来他的小名儿不需要做更改,直接就能访问服务器,因为他们都只指向了http://www.xx.com,服务器IP改没改它们不管

那么假如不用CNAME,直接做A记录会怎样?

http://www.yy.com → 111.111.111.111

http://www.cc.com → 111.111.111.111

http://www.xx.com → 111.111.111.111

http://www.kk.com → 111.111.111.111

那么当111.111.111.111更改的时候,全部相关A记录指向关系都要做更改,这才叫麻烦…

因此我们这边,实际上指向的关系是,tsuiwade.ml域名指向tsuiwade.github.io,当访问ml时,DNS商回把这个这个请求解析发到github去,github内部进行处理,那么github要如何知道它应该响应哪个仓库的内容回去呢?是根据你在仓库Gitpages设置的自定义域名,来给你响应对应仓库的静态内容。

CNAME的应用

比较多的是用在CDN加速上

举个CDN的栗子 :假如你是DD公司老板,你公司中的一台IP为1.1.1.1的服务器,注册了域名为http://www.dd.com,要对外提供客户访问。随着公司越做越大,访问量也越来越多,服务器顶不住了,你去找CDN提供商购买CDN加速服务,这个时候他们要求你的域名做个CNAME指向他们给你的一个域名叫http://www.xdd.com,当用户访问http://www.dd.com的时候,本地DNS会获得CDN提供的CNAME域名:http://www.xdd.com,然后再次向DNS调度系统发出请求,通过DNS调度系统的智能分析,把这个http://www.xdd.com指向一个(离用户地理位置最近的)CDN提供商的服务器IP,让用户就近取到想要的资源(如访问网站),大大降低了延迟。


解决方法就是在博客文件的source目录下,新增一个CNAME文件,注意全大写,并且没有文件后缀。CNAME中写:

tsuiwade.tk

image-20210313223738438

image-20210313163741297

最后可以在公开的博客仓库的master分支下,看到新增了CNAME文件,并且setting中的站点域名是我所设置的。

image-20210313154745903

source 文件夹,实质上才是你发布时候使用的根目录,你项目的根目录,只是开发的时候的根目录而已。hexo build 的时候,会将 source 目下下的内容进行一次拷贝,如果放在项目根目录下的话,文件并不会存在于构建输出的目录里。

image-20210313160408176

参考:https://blog.csdn.net/xs20691718/article/details/81873921

可能遇到的问题

我前面使用的是.ml后缀的域名,后来再输入github.io的时候,会自动跳转到ml,导致问题。后来打开浏览器设置选项,清空用户的缓存文件和cookies即可。

image-20210313112617249