Farseerfc的小窩 - cloudflare//farseerfc.me/2015-01-26T23:32:00+09:00換到 farseerfc.me 域名2015-01-26T23:32:00+09:002015-01-26T23:32:00+09:00farseerfctag:farseerfc.me,2015-01-26:/switch-to-farseerfc-dot-me-domain.html<p>上個月就在 <ruby><rb>狗爹</rb><rp>(</rp><rt>godaddy</rt><rp>)</rp></ruby> 上買了個自己的域名 <code class="code">
farseerfc.me</code>
準備用在這個
博客上,當時試着轉到過這個域名,發現 <ruby><rb>自定義域名</rb><rp>(</rp><rt>custom domain</rt><rp>)</rp></ruby>
只支持 http 不支持 https ,想着還要買自己的證書,於是就扔在了一旁。不用自定義域名的話,
放在 github.io 上是可以用 HTTPS 的。
今天在 <a class="reference external" href="//webchat.freenode.net/?channels=archlinux-cn">#archlinux-cn</a> 上受大牛 <a class="reference external" href="/links.html#quininer">quininer</a> 和 <a class="reference external" href="/links.html#lilydjwg">lilydjwg</a> 點播,
發現 cloudflare 有提供
<a class="reference external" href="https://blog.cloudflare.com/introducing-universal-ssl/">免費的支持 SSL 的 CDN 服務</a>
趕快去申請了一個,感覺非常讚,於是就換過來了。</p>
<p>設置的方法按照 <a class="reference external" href="https://me.net.nz/blog/github-pages-secure-with-cloudflare/">這篇博文</a>
說的一步步做下來,如它所述,用 CloudFlare …</p><p>上個月就在 <ruby><rb>狗爹</rb><rp>(</rp><rt>godaddy</rt><rp>)</rp></ruby> 上買了個自己的域名 <code class="code">
farseerfc.me</code>
準備用在這個
博客上,當時試着轉到過這個域名,發現 <ruby><rb>自定義域名</rb><rp>(</rp><rt>custom domain</rt><rp>)</rp></ruby>
只支持 http 不支持 https ,想着還要買自己的證書,於是就扔在了一旁。不用自定義域名的話,
放在 github.io 上是可以用 HTTPS 的。
今天在 <a class="reference external" href="//webchat.freenode.net/?channels=archlinux-cn">#archlinux-cn</a> 上受大牛 <a class="reference external" href="/links.html#quininer">quininer</a> 和 <a class="reference external" href="/links.html#lilydjwg">lilydjwg</a> 點播,
發現 cloudflare 有提供
<a class="reference external" href="https://blog.cloudflare.com/introducing-universal-ssl/">免費的支持 SSL 的 CDN 服務</a>
趕快去申請了一個,感覺非常讚,於是就換過來了。</p>
<p>設置的方法按照 <a class="reference external" href="https://me.net.nz/blog/github-pages-secure-with-cloudflare/">這篇博文</a>
說的一步步做下來,如它所述,用 CloudFlare 的優點如下:</p>
<ol class="arabic simple">
<li>CDN 加速</li>
<li>SSL (HTTPS) 加密</li>
<li>支持 SPDY 協議</li>
<li>支持 IPv6</li>
</ol>
<div class="label label-warning">
<strong>2015年12月29日更新</strong></div>
<p>現在不光支持 SPDY 而且支持 HTTP/2 了。</p>
<p>然後 <strong>免費賬戶</strong> 的一些缺點有:</p>
<ol class="arabic simple">
<li>CloudFlare 和 github.io 之間的數據不是加密的,因爲 github
<ruby><rb>自定義域名</rb><rp>(</rp><rt>custom domain</rt><rp>)</rp></ruby> 還不支持使用自己的證書。這也是一開始我沒用
自定義域名的原因嘛,這沒有辦法……</li>
<li>CloudFlare 給免費賬戶簽名的 SSL 證書比較新,不支持一些老的設備和瀏覽器,比如不支持
老的 XP 系統的 IE 或者 2.x 的 Android。這種情況下沒辦法只能用沒有加密的 HTTP 了。</li>
<li>不支持 <a class="reference external" href="https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security">HSTS 頭</a>
,所以不能從服務器這邊強制瀏覽器用 HTTPS。當然可以放個 javascript 跳轉,
也可以用 <a class="reference external" href="https://www.eff.org/https-everywhere">HTTPSEverywhere</a> 這種方案。</li>
</ol>
<div class="label label-warning">
<strong>2015年12月29日更新</strong></div>
<p>如評論中 <a class="reference external" href="http://farseerfc.me/switch-to-farseerfc-dot-me-domain.html#comment-2015037231">提到的</a>
現在支持 HSTS 了。</p>
<div class="section" id="id3">
<h2>設置步驟</h2>
<p>基本按照默認的選項下一步就可以了。</p>
<ol class="arabic simple">
<li>和那個博主一樣我把 <ruby><rb>安全級別</rb><rp>(</rp><rt>Security profile</rt><rp>)</rp></ruby> 降到了 Low ,即使是可疑流量也
不會要求輸入 CAPTCHA 。</li>
<li>把 SSL 方式開在 Flexible SSL,訪客到 CloudFlare 是加密的,而 CloudFlare 到
github.io 是不加密的。</li>
<li>把 CDN 開到了 CDT+Full Optimization ,可以對訪問加速。由於是完全靜態的博客,沒有
動態變化的內容,所以應該比較安全。</li>
<li>服務器設置的一步需要將 <ruby><rb>域名解析服務器</rb><rp>(</rp><rt>DNS nameservers</rt><rp>)</rp></ruby> 從狗爹的服務器改到
CloudFlare 的,如下圖:</li>
</ol>
<div class="figure">
<img alt="更改狗爹的域名服務器" class="img-responsive" src="//farseerfc.me/images/godaddy.png"/>
<p class="caption">更改狗爹的域名服務器</p>
</div>
<p>申請好之後就由 CloudFlare 接管域名解析了,接下來在 CloudFlare 的 DNS 設置添加一條
<a class="reference external" href="https://help.github.com/articles/tips-for-configuring-an-a-record-with-your-dns-provider/">A 類規則指向 github pages 的 IP</a> 。</p>
<div class="figure">
<img alt="更改CloudFlare的DNS規則" class="img-responsive" src="//farseerfc.me/images/cloudflaredns.png"/>
<p class="caption">更改CloudFlare的DNS規則</p>
</div>
<p>等一切都反映到 DNS 服務器上就設置完成了,接下來給
<a class="reference external" href="https://help.github.com/articles/adding-a-cname-file-to-your-repository/">farseerfc.github.io push 一個 CNAME 文件</a>
寫上我的域名就可以了。我用 Makefile 配合我的 pelican 配置做這個:</p>
<div class="highlight"><pre><span class="code-line"><span></span><span class="nf">publish</span><span class="o">:</span> <span class="n">rmdrafts</span> <span class="n">cc</span> <span class="n">clean</span> <span class="n">theme</span></span>
<span class="code-line"> <span class="o">[</span> ! -d <span class="k">$(</span>OUTPUTDIR<span class="k">)</span> <span class="o">]</span> <span class="o">||</span> find <span class="k">$(</span>OUTPUTDIR<span class="k">)</span> -mindepth <span class="m">1</span> -not -wholename <span class="s2">"*/.git*"</span> -delete</span>
<span class="code-line"> rm -rf cache</span>
<span class="code-line"> <span class="nb">echo</span> <span class="k">$(</span>SITEURL<span class="k">)</span> > content/static/CNAME</span>
<span class="code-line"> <span class="k">$(</span>PELICAN<span class="k">)</span> <span class="k">$(</span>INPUTDIR<span class="k">)</span> -o <span class="k">$(</span>OUTPUTDIR<span class="k">)</span> -s <span class="k">$(</span>PUBLISHCONF<span class="k">)</span> <span class="k">$(</span>PELICANOPTS<span class="k">)</span></span>
<span class="code-line"> <span class="k">$(</span>MAKE<span class="k">)</span> rsthtml</span>
<span class="code-line"></span>
<span class="code-line"><span class="nf">github</span><span class="o">:</span></span>
<span class="code-line"> <span class="o">(</span><span class="nb">cd</span> <span class="k">$(</span>OUTPUTDIR<span class="k">)</span> <span class="o">&&</span> git checkout master<span class="o">)</span></span>
<span class="code-line"> env <span class="nv">SITEURL</span><span class="o">=</span><span class="s2">"farseerfc.me"</span> <span class="k">$(</span>MAKE<span class="k">)</span> publish</span>
<span class="code-line"> <span class="o">(</span><span class="nb">cd</span> <span class="k">$(</span>OUTPUTDIR<span class="k">)</span> <span class="o">&&</span> git add . <span class="o">&&</span> git commit -m <span class="s2">"update"</span> <span class="o">&&</span> git push<span class="o">)</span></span>
</pre></div>
<div class="highlight"><pre><span class="code-line"><span></span><span class="n">SITEURL</span> <span class="o">=</span> <span class="s1">'//'</span> <span class="o">+</span> <span class="n">getenv</span><span class="p">(</span><span class="s2">"SITEURL"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">'localhost:8000'</span><span class="p">)</span></span>
<span class="code-line"><span class="n">STATIC_PATHS</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'static'</span><span class="p">,</span> <span class="s1">'images'</span><span class="p">,</span> <span class="s1">'uml'</span><span class="p">,</span> <span class="s1">'images/favicon.ico'</span><span class="p">,</span> <span class="s1">'static/CNAME'</span><span class="p">]</span></span>
<span class="code-line"><span class="n">EXTRA_PATH_METADATA</span> <span class="o">=</span> <span class="p">{</span></span>
<span class="code-line"> <span class="s1">'images/favicon.ico'</span><span class="p">:</span> <span class="p">{</span><span class="s1">'path'</span><span class="p">:</span> <span class="s1">'favicon.ico'</span><span class="p">},</span></span>
<span class="code-line"> <span class="s1">'static/CNAME'</span><span class="p">:</span> <span class="p">{</span><span class="s1">'path'</span><span class="p">:</span> <span class="s1">'CNAME'</span><span class="p">}</span></span>
<span class="code-line"><span class="p">}</span></span>
</pre></div>
<p>然後把生成的靜態網站 push 到 github 之後可以從項目設置裏看到域名的變化:</p>
<div class="figure">
<img alt="Github 配置好自定義域名之後的變化" class="img-responsive" src="//farseerfc.me/images/githubdomain.png"/>
<p class="caption">Github 配置好自定義域名之後的變化</p>
</div>
<p>最後把Disqus的評論也遷移到新的域名,disqus有方便的遷移嚮導,一直下一步就可以了。</p>
<p>這樣就一切都設置妥當了。</p>
</div>
<div class="section" id="id4">
<h2>致謝</h2>
<p>最後要感謝提供消息的 <a class="reference external" href="/links.html#quininer">quininer</a> 和 <a class="reference external" href="/links.html#lilydjwg">lilydjwg</a> ,感謝撰寫設置步驟的
<em>Jonathan J Hunt</em> , 感謝 CloudFlare 提供免費 SSL CDN 服務,感謝 Github 提供
方便免費的 Pages 託管。</p>
</div>