1. 程式人生 > >繫結域名到 GitHub Pages

繫結域名到 GitHub Pages

GitHub Pages 繫結來自阿里雲的域名

簡介

我在阿里雲上註冊了一個新域名:yuanzb.com,我已經在GitHub Pages上建立了自己的部落格:http://yuanzb.github.io/yuanzb/。現在我希望將yuanzb.com對映到http://yuanzb.github.io/yuanzb/。主要參考資料:

  1. Setting up a custom domain with GitHub Pages
  2. 建立GitHub技術部落格全攻略 - 第九部分:CNAME繫結域名
  3. Hexo在github上構建免費的Web應用 - 第4.3節:設定域名

第一步:建立CNAME資料夾

在你的個人部落格倉庫的根目錄中新建檔案CNAME(注意沒有後綴),在該檔案增加一行文字,告訴Github Pages伺服器你想指定的域名。該域名不能包含字首資訊,即不能新增http:\\字首。

 

!重要補充!CNAME檔名一定要大寫,否則Github Pages伺服器無法識別和解析。我就出現了這樣的問題。我的CNAME繫結域名是正確的,通過ping yuanzb.comping yuanzb.github.io兩條指令,我發現了他們都指向同一個IP地址(即我的部落格IP地址),可是我在使用瀏覽器訪問的時候,會出現Site not Found

提示,這個時候我就只能合理的懷疑Github Pages伺服器根本就沒有把yuanzbyuanzb.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就是重新命名,指向另一個域名。

  1. 在阿里雲控制檯,設定主機記錄www,記錄型別為A,記錄值是IP192.30.252.153。其中192.30.252.153是Github Pages伺服器指定的IP地址,訪問該IP地址即表示訪問Github Pages。
  2. 在阿里雲控制檯,設定主機記錄www,記錄型別為A,記錄值是IP192.30.252.154。同上。
  3. 在阿里雲控制檯,設定主機記錄@,記錄型別為CNAME,記錄值是yuanzb.github.io.。表示將http://yuanzb.com這個主域名對映yuanzb.github.io。在這裡千萬不要忘記記錄值中.io後面還有一個點.
  4. 但是很多時候,我們只想將子域名繫結到部落格地址。比如如果你想將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.ioblog.yuanzb.com繫結起來,而不是和www.yuanzb.com繫結。
  5. 如果你想將www.yuanzb.com(即主域名地址)對映到yuanzb.github.io,那麼主機記錄就是www,記錄型別是A,記錄值是具體的IP地址(在我們這個例子中是192.30.252.153192.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快取,至此你的域名可以被訪問。