《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: *