上篇文章中講了將我的Octopress博客部署到亞馬遜的S3上。而這篇文章則主要講如何使用亞馬遜提供的CloudFront作為內容分發并將自己的獨立域名綁定到此CloudFront上。
首先,需要啟用亞馬遜的CloudFront。我剛開始以為只需要‘sign up’就行。但是當我在’AWS Management Console’中點擊‘Services’中的CloudFront時,卻得到了‘Account Blocked’錯誤。
這個問題很奇怪,CloudFront明明已經在’ Services You’re Signed Up For’ list中了,但是咋個無法使用那?我只好使用gmail給Amazon客服中心發了郵件詢問,結果客服中心告訴我需要使用一個business email(商業郵箱)來發送激活申請。我只好使用公司郵箱發送了申請,過了幾個小時就收到了回信,告訴我已經可以使用了。
登陸’AWS Management Console’后,點擊’Services’中的‘CloudFront’,就可以看到控制界面了。
點擊’Create Distribution’按鈕,Delivery method選擇Download。 Download主要針對一些html,css,js等靜態文件,而Streaming則主要是一些音視頻文件。
下一步,要選擇Origin,即要進行內容分發的源。雖然亞馬遜會自動列出你的S3 bucket,但是千萬不要選。而是自己手動輸入example.com這個Bucket的Endpoint(Endpoint在S3 Console的Properties標簽下的Static Website hosting里看得到)。為什么不直接選S3 bucket那?這是因為當我們訪問一個目錄時,我們期望能返回默認的object。雖然CouldFront有個Default Root Object設置,只是對根目錄起作用,對子目錄不起作用。如果使用Bucket的Endpoint,再加上之前已經給該Bucket配置了Default Object,就可以解決這個問題。
在CNAMEs項中輸入自己的域名,多個域名以逗號分隔。
這樣子CoudFront就算配置好了。通過管理頁面也可以配置Error page等。
接下來,需要登錄自己域名的提供商的管理后臺,添加一條自己獨立域名的轉發,轉發到這個CloudFront的Domain Name上。
一般需要10分鐘到2個小時等待新的域名轉發設置生效。
另外要專門提一下CloudFront的cache機制。CloudFront主要通過檢測Origin中的http header中的cache-control屬性。根據cache-control的值來設置cache時間。但是CloudFront最長只保留24小時的cache,過后就會清空并重新cache。對于我的小博客來說24小時太長了,那如何給Octopress注入cache-control這個http header那?其實在上篇文章已經提過了。S3支持給每個object設置 http header,我們可以通過s3cmd來自動設置,這就是為什么在S3 task中要加入這個參數。
1 2 3 4 5 |
|
其中S3_cache_secs就是設置cache時間,我把它設置為3600,也就是一個小時。
至此,我的Octopress博客已經在云端了。感覺訪問速度比以前快不少。以前我是部署在github pages,服務器放置在美國。現在使用了CloudFront,亞馬遜會自動將請求轉發到最近的CloudFront edge location。接下來我再研究下 Amazon Route 53,看看有什么好玩的。
我的博客地址: http://www.huangbowen.net
文章列表