2 min read

Github Pages 自定义域名

我最近挖的一个坑,托管在 Github 库上,库地址是 https://github.com/chenxsan/linuxcoo。未设定自定义域名的话,可以通过 http://chenxsan.github.io/linuxcoo/ 访问。

现在,我要给它添加一个自定义域名 www.linuxcoo.com

创建 CNAME 文件

首先,在库的 gh-pages 分支根目录下创建 CNAME 文件,写入:

www.linuxcoo.com

注意以下几点:

  • CNAME 文件名大写
  • 域名前不需要添加 http 这样的协议
  • 这里使用 www 子域名而不是顶级的 linuxcoo.com,Github 推荐使用子域名
  • 如果域名 ‘linuxcoo.com’ 同样指向这个库的话,Github Pages 会自动将其重定向到 ‘www.linuxcoo.com’ 上

添加 CNAME 记录

DNS 中添加一条 CNAME 记录,将 www 指向 chenxsan.github.io

之后检查 DNS 设置的情况:

$ dig www.linuxcoo.com +nostats +nocomments +nocmd

; <<>> DiG 9.9.5-rpz2+rl.14038.05-P1 <<>> www.linuxcoo.com +nostats +nocomments +nocmd
;; global options: +cmd
;www.linuxcoo.com.              IN      A
www.linuxcoo.com.       3599    IN      CNAME   chenxsan.github.io.
chenxsan.github.io.     3599    IN      CNAME   github.map.fastly.net.
github.map.fastly.net.  14      IN      A       103.245.222.133

一切正常。

添加 A 记录

上面的 CNAME 记录只是将 www.linuxcoo.com 指向 Github 服务器,此时访问 linuxcoo.com 域名,会返回 404 错误,所以还需要在 DNS 中添加两条 A 记录指向 Github Pages 的两个 IP(更好的办法是添加 ALIAS,但 Google Domains 并不支持):

  1. 192.30.252.153
  2. 192.30.252.154

再使用 dig 命令检查 DNS 状况:

$ dig linuxcoo.com

; <<>> DiG 9.9.5-rpz2+rl.14038.05-P1 <<>> linuxcoo.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56008
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;linuxcoo.com.                  IN      A

;; ANSWER SECTION:
linuxcoo.com.           3599    IN      A       192.30.252.153
linuxcoo.com.           3599    IN      A       192.30.252.154

;; Query time: 588 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Nov 14 22:27:00 CST 2014
;; MSG SIZE  rcvd: 73

这时再访问 linuxcoo.com 域名,已经能正常打开,并且因为第一步中的设置,Github 会帮我们重定向到 www 上。

报告问题 修订

如果你有自建 https 代理的需求,欢迎尝试 Phantom,一键搭建,方便快捷。查看 demo