GitHub Pages 綁定來自阿里雲的域名
簡介
我在阿里雲上註冊了一個新域名:yuanzb.com,我已經在GitHub Pages上建立了自己的博客:http://yuanzb.github.io/yuanzb/。現在我希望將yuanzb.com
映射到http://yuanzb.github.io/yuanzb/
。主要參考資料:
- Setting up a custom domain with GitHub Pages
- 創建GitHub技術博客全攻略 - 第九部分:CNAME綁定域名
- Hexo在github上構建免費的Web應用 - 第4.3節:設置域名
第一步:創建CNAME文件夾
在你的個人博客倉庫的根目錄中新建文件CNAME
(注意沒有後綴),在該文件增加一行文字,告訴Github Pages服務器你想指定的域名。該域名不能包含前綴信息,即不能添加http:\\
前綴。
!重要補充!CNAME文件名一定要大寫,否則Github Pages服務器無法識別和解析。我就出現了這樣的問題。我的CNAME綁定域名是正確的,通過
ping yuanzb.com
和ping yuanzb.github.io
兩條指令,我發現了他們都指向同一個IP地址(即我的博客IP地址),可是我在使用瀏覽器訪問的時候,會出現Site not Found
提示,這個時候我就只能合理的懷疑Github Pages服務器根本就沒有把yuanzb
和yuanzb.github.io
綁定起來,即我的CNAME文件設置錯誤。Google之後發現CNAME文件名的大小寫會產生影響(My custom domain isn't working),萬惡的Windows系統不區分文件名大小寫,所以即使你在本地更改了CNAME大小寫然後push到github,還是沒有用。。。我就只好到github上去修改成大寫了。。。坑。。。
每個CNAME文件能且只能指定一個域名。更多關於增加CNAME文件的信息可見Adding a CNAME file to your repository。
第一步的目的是,Github讀取你的CNAME之後,Github服務器會設置yuanzb.me
爲你的主域名,然後將yuanzb.github.io
重定向到yuanzb.com
。
第二步:CNAME綁定域名
登錄阿里雲單域名控制檯,在域名解析
中添加如圖所示的解析
默認使用阿里雲提供的萬網DNS服務器。當然你也可以使用DNSPOD提供的DNS服務器,這樣可以使你的域名在國外更快速的傳播。當你使用DNSPOD提供的DNS服務器時,除了DNS服務器不一樣以外,其他的設置(比如A記錄和CNAME記錄)均相同。以下我們簡要分析我們所添加的A記錄和CNAME記錄的含義。
在域名解析中,A記錄就是直接指定一個IP,CNAME就是重命名,指向另一個域名。
- 在阿里雲控制檯,設置主機記錄
www
,記錄類型爲A,記錄值是IP192.30.252.153
。其中192.30.252.153
是Github Pages服務器指定的IP地址,訪問該IP地址即表示訪問Github Pages。 - 在阿里雲控制檯,設置主機記錄
www
,記錄類型爲A,記錄值是IP192.30.252.154
。同上。 - 在阿里雲控制檯,設置主機記錄
@
,記錄類型爲CNAME,記錄值是yuanzb.github.io.
。表示將http://yuanzb.com
這個主域名映射yuanzb.github.io
。在這裏千萬不要忘記記錄值中.io
後面還有一個點.
! - 但是很多時候,我們只想將子域名綁定到博客地址。比如如果你想將
blog.yuanzb.com
(即博客子域名地址,主域名地址是www.yuanzb.com
)映射到yuanzb.github.io
,那麼在主機記錄中就應該填寫blog
,記錄類型爲CNAME,記錄值是yuanzb.github.io
。因爲你的主域名已經默認爲yuanzb.com
,所以主域名和主機記錄合起來就是blog.yuanzb.com
。而且這個時候,你github項目的CNAME文件內容也應該相應的改爲blog.yuanzb.com
,因爲你是想將yuanzb.github.io
和blog.yuanzb.com
綁定起來,而不是和www.yuanzb.com
綁定。 - 如果你想將
www.yuanzb.com
(即主域名地址)映射到yuanzb.github.io
,那麼主機記錄就是www
,記錄類型是A,記錄值是具體的IP地址(在我們這個例子中是192.30.252.153
、192.30.252.154
)。因爲你的主域名已經默認爲yuanzb.com
,所以主域名和主機記錄合起來就是www.yuanzb.com
。
你可以將多個域名都映射到xxxxx.github.io
之類的你自己的站點上,但是需要新建不同內容的CNAME文件。
注意,.me
已經是頂級域名(和.com
、.org
等域名是同一級的),所以需要使用A記錄進行域名解析。
第二步的目的是,告訴所有DNS服務器,對於yuanzb.me
的訪問都會被重定向到yuanzb.github.io
。
第三步:漫長的等待
要全球解析生效,得等上一會了,也可以先ping一下自己的設置對不對。阿里雲域名服務的工作原理是,在你更新了域名解析之後,首先是阿里的萬網雲解析,然後傳播到各大運營商的DNS服務器,刷新DNS緩存,至此你的域名可以被訪問。