Azure China (13) Azure China CDN經驗總結


  《Windows Azure Platform 系列文章目錄

  

  最近處理了很多CDN的問題,在這里記錄一下。

 

  1.首先介紹一下CDN的原理:

  (1)用戶輸入需要訪問的URL (比如www.contoso.cn),經過本地的DNS Server進行解析

  (2)DNS Server返回www.contoso.cn域名對應的CNAME:www.contoso.cn.mschcdn.com

  (3)為了得到實際IP地址,瀏覽器需要再次對獲得的CNAME域名進行解析以得到實際的IP地址

  (4)用戶向該IP節點(CDN服務器)發出請求

  (5)全局負載均衡設備把服務器的IP地址返回給用戶

  (6)由於是第一次訪問,CDN服務器會向原web站點請求,並緩存內容

  (7)請求結果發給用戶

 

  2.國內使用Azure CDN需要准備好:

  (1)用戶自己的域名,比如cdn.contoso.cn

  (2)該域名(cdn.contoso.cn) 必須進行過ICP備案,並且有ICP備案編號

 

  3.Azure支持的CDN加速類型:

  (1)HTTP加速

  (2)HTTPS加速

 

  4.創建Azure China CDN,如下圖所示:

  

  上圖中:

  (1)Custom Domain,是用戶自己的域名,這里假設為:cdn.contoso.cn

  (2)ICP Number,是用戶域名的ICP備案號

  (3)Acceleration Type,是CDN的加速類型。Azure CDN支持的加速類型有

  -Web加速

  -下載加速

  -VOD加速

  -圖片處理加速

  針對不同的加速類型,Azure CDN的緩存策略是不同的。我會在后面的內容做項目的介紹

  (4)Origin Domain Type,是源站類型。Azure CDN支持的源站類型有

  -Cloud Service,雲服務

  -Storage Account,存儲賬戶

  -Web App,網站服務

  -Media Service,媒體服務

  -Custom origin domain,用戶自定義域名。即CDN的源站,可以不在微軟雲Azure平台,可以在用戶自己的IDC環境。

  (5)Origin host header,表示訪問CDN的HTTP Host 頭

  

  5.我們輸入上面的信息並提交后,Azure CDN會驗證用戶自定義域名和ICP備案是否有效。此時CDN狀態為Creating。如下圖:

  

  

  6.等待Azure平台驗證通過后,上面的Status狀態為Ready,同時微軟雲Azure CDN會提供一個新的二級域名,假設為cdn.contoso.cn.mschcdn.com

  

 

  7.接下來,我們需要在DNS供應商那邊,把自己的域名:cdn.contoso.cn,增加CNAME到,cdn.contoso.cn.mschcdn.com

 

  8.進入CDN的配置頁面,我們點擊Manage。如下圖:

  

 

  注意事項1:在彈出的窗口中,如果源站是Web App的話,因為Web App綁定了HOST。所以HOST頭必須為Web App的默認域名 (******.chinacloudsites.cn)

  

 

  注意事項2:當CDN的Header中包含Set-Cookie時,默認是不緩存的。

  如果我們的源站使用Web App的話,Web App默認HTTP Head包含Cookie ARR Affinity。如下圖:

  

  我們有兩種解決方案(二選一)

  (1)關閉Azure Web App ARR Affnity

  

  (2)或者在CDN緩存規則里,設置忽略Cookie

  

 

  注意事項3:注意修改默認的緩存規則

  當我們上面介紹了,CDN支持的加速類型有:Web加速,下載加速,VOD加速等

  Web 加速,默認的緩存規則如下:

  

 

  下載加速,默認的緩存規則如下:

  

 

  我們需要按照自己的業務需求,設置自己的緩存規則。比如上面的下載加速,默認是不提供png, jpg, gif, jpeg下載的

  我們就需要增加一行緩存內容。如下圖:

   

 

  注意事項4,緩存規則是逐條匹配的

  系統根據配置順序逐條匹配,最先配置的規則具有最高優先級。規則被匹配后,其后的規則不再被匹配。

  舉個例子:

  

  在上圖中,雖然我們在緩存內容中,分別匹配了兩條規則,分別對應

  -shtml;html;htm

  -png;jpg;gif;jpeg

  但是在不擴展內容中,優先配置了整個根目錄,所以后面的緩存內容都無效

 

  正確的配置應該如下圖:

  

 

  注意事項5:如果我們想主動推動CDN緩存內容,到POP點,可以選擇預加載。如下圖:

  請注意:預加載只能針對文件操作,無法針對目錄操作

  

  

 

  注意事項6:我們可以通過Chrome,觀察Respond Header,來觀察是否命中CDN POP點

  首先我們打開Chrome,按F12,選擇Network,查看Respond Header X-Cache信息

   如果命中,則如下圖:

  

  

  如果沒有命中,則參考下圖:

  

 

 

  注意事項7:如果源站之前有WAF(Web Application Firewall)的情況下,如何配置

  首先我們需要了解數據流向是:客戶端->CDN->WAF->源站

  所以CDN的源站信息,指向WAF前端的公網IP地址,HOST根據需要填寫。

  如果源站是Azure Web App的話,HOST必須為Web App的默認域名 (******.chinacloudsites.cn)

  最后請WAF的供應商做請求轉發即可

 

 

  注意事項8:如何配置CDN的跨域訪問 (CORS):

  我們可以在CDN配置界面,選擇域名管理,HTTP響應頭。

  在里面設置設置Access-Control-Allow-Origin,設置:

  

  •   響應中含有 Access-Control-Allow-Origin 標頭,指示允許使用哪個源站點。

     例如:Access-Control-Allow-Origin: https://www.contoso.com

  •   如果服務器在檢查源標頭之后不允許跨源請求,則會顯示 HTTP 錯誤代碼(如 403)
  •   帶有通配符的 Access-Control-Allow-Origin 標頭,允許所有源:

       Access-Control-Allow-Origin: *

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM