天天看點

在使用CDN時配置源站30X的一些注意事項

作者:拱卒

301/302跳轉是網站業務常見的一種處理手段,把針對其他域名的通路重定向到主要承擔業務的域名上。

但是如果使用CDN産品來對網站業務進行加速,有一些注意事項:

  • 源站配置跳轉的30X location url是否也通過CDN進行了加速

正常情況下CDN會針對30X記錄的做緩存,如果跳轉url的流量沒有走CDN的話,那麼這種情況下,本質上客戶的業務是沒有被加速的,CDN隻是緩存了一個30X的跳轉記錄。在這種情況下,一般控制台上看到的流量也會比較低(下圖是控制台截圖)。

在使用CDN時配置源站30X的一些注意事項

如某客戶發現自己CDN控制台流量突然變低,經測試發現通路客戶的CDN域名都跳轉301了,如下圖所示:

在使用CDN時配置源站30X的一些注意事項

可以看到通路客戶的CDN域名下的url A出現了301跳轉到url B。然後發現客戶的url B并未通過CDN加速,是以實際上客戶的客戶在通路客戶的網站業務時,主要流量沒有被CDN加速,是以控制台看到流量有所降低。而這個301跳轉是客戶新配置的,配置後就發現了流量問題。

這種現象也可以通過CDN控制台的http狀态碼來觀察,如果發現很高比例的30X,那麼需要關心一下30X的位址是否也被CDN加速了。

在使用CDN時配置源站30X的一些注意事項
  • CDN如何處理源站的302跳轉

有關CDN對源站302的處理邏輯,可以參考官方文檔

https://help.aliyun.com/knowledge_detail/40128.html?spm=5176.10695662.1996646101.searchclickresult.f22b3f46TfGxEp

值得注意的是以下内容和相應的解決方案:

在對網站部署CDN後由于CDN的産品性質,CDN會對使用者的通路資源緩存到CDN的節點上以便後續可以加快使用者的通路,這種情況下就可能會出現第一個使用者通路後會對對應的302的請求進行緩存。而其他不同終端裝置的使用者通過該URL進行通路的時候就會出現通路到的頁面情況仍然是第一個使用者緩存的302的請求到的頁面上。這就會造成使用者源站設定的對不同終端的适配功能失效。
  • CDN和SLB等産品配合使用時的30跳轉問題

有些客戶會發現如果CDN後面配置SLB,直接通路SLB的話,沒有問題。但是開啟CDN後,會出現跳轉死循環的現象

一個可能的原因是:

  1. SLB開啟了https和http的通路端口,然後在源站做了http->https的跳轉。
  2. 然而CDN配置加速域名時,隻配置了源站的80端口。
  3. 這樣通過CDN的https通路,CDN會預設回源到源站(即SLB)的80端口。http協定通路SLB的80端口會最終傳回給client(即CDN L2回源幾點)一個30X跳轉到https,CDN再将這個結果傳回給真正的使用者,就形成了一個死循環。

解決辦法是開啟CDN的跟随協定回源功能,這樣https通路CDN會通過https協定回源到源站的443端口,就不會出現死循環的現象。感興趣的朋友們可以搭建一個類似的鍊路進行一下測試。

謝謝大家

繼續閱讀