博客地址之前一直都是默認的 secsilm.github.io,一直想換個自己的域名,正巧看到 NameBeta 上好幾個域名都好便宜,就準備買個搞搞,最後挑中了 alanlee.fun
這個域名。
把自己的博客域名換成自己買的域名並實現 HTTPS(GitHub Pages 不支持自定義域名 HTTPS),大概需要這麼幾個步驟(以在 namecheap 上購買域名爲例):
- 在 namecheap 購買自己心儀的域名
- 更新 GitHub 倉庫
- CloudFlare 端 DNS 配置
- namecheap 端更改 nameservers
- CloudFlare 端設置使用 HTTPS
第一步購買域名我就不贅述了,只是需要注意的是付款不支持支付寶,支持 PayPal。
以下假設已經購買到 alanlee.fun
這個域名。
更新 GitHub 倉庫
在你的 hexo 博客本地根目錄中的 source
目錄下增加一個 CNAME
文件(無後綴名),裏面寫上購買的域名,本文中即 alanlee.fun
:
然後把更新部署到 GitHub 上:
hexo d -g
此時你應該可以在 GitHub 上看到 CNAME
文件了,並且在你的倉庫設置中也可以看到你的自定義域名也已經加上了,此時訪問 alanlee.fun
應該可以進入博客了,但是此時網址欄是沒有「小綠鎖」的(HTTPS),要想讓這個「小綠鎖」出現,我們需要使用 CloudFlare 的服務。
CloudFlare 端 DNS 配置
首先你需要註冊一個 CloudFlare 賬號並把自己的域名添加上去,這個過程很簡單,我就不贅述了。註冊完登陸之後,點擊下圖中的 DNS
選項卡,另一個 Page Rules
是我們一會兒要用到的。
然後如下圖一樣添加兩條記錄,Value
處都寫自己原來的博客地址,即是 your-github-username.github.com
這樣的形式,例如我的 secsilm.github.com
:
按理說我們下一步要在 Page Rules
那設置讓我們的域名使用 HTTPS 鏈接,但是你如果現在就這麼做的話你就會發現你設置不了。這是因爲你必須在域名提供商那把 nameservers 設爲 CloudFlare 的 DNS 才能使用他的 HTTPS 服務,所以我們現在得去 namecheap 那設置一下 nameservers,否則在 CloudFlare 上 Overview
處你的域名會顯示未激活狀態,而不是下面的 active 狀態:
namecheap 端更改 nameservers
登錄進 namecheap,點擊右上角 Account
→ Domain List
,在 NAMESERVERS
處選擇 Custom DNS
,然後填上 CloudFlare 的nameservers(可以在 CloudFlare 上 Overview
選項卡頁面找到):
至此,namecheap 端的更改就結束了。
CloudFlare 端設置使用 HTTPS
現在就只需要在 Page Rules
選項卡頁面創建幾個 page rules 就行了,免費用戶最多創建 3 個:
第一個 :
第二個 ,可選,讓所有非 WWW 的鏈接安全地轉到帶 WWW 的鏈接:
第三個 ,可選,這會在 CloudFlare 的 CDN 中緩存你的靜態頁面:
至此,alanlee.fun
已經可以安全的訪問了,「小綠鎖」已經出現了:
缺點
其實這種方法並不是百分百的 HTTPS 鏈接,你的博客和 CloudFlare 之間還是 HTTP 鏈接,瀏覽器和 CloudFlare 之間則是 HTTPS 鏈接,引用 CloudFlare 官方說明:
Firstly a word on security. If you are deploying a JavaScript app which communicates with remote APIs, be sure not to use this for sensitive data submissions. As GitHub themselves put it: “GitHub Pages sites shouldn’t be used for sensitive transactions like sending passwords or credit card numbers.” Also bear in mind your website source files are publicly accessible in a Git repository, so be extra careful about what you put there.
There are some things we can’t do; GitHub Pages doesn’t let us set custom headers, which unfortunately means we can’t do HTTP/2 Server Push right now.
References
- Secure and fast GitHub Pages with CloudFlare
- Hexo-6-使用Cloudflare免費HTTPS | Madao No More
- 使用Cloudflare爲自定義域名的GithubPages實現HTTPS化 | Steffan’s Blog