雲計算

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

作者:拱卒

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

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

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

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

如某客戶發現自己CDN控制檯流量突然變低,經測試發現訪問客戶的CDN域名都跳轉301了,如下圖所示:
image.png

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

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

  • 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端口,就不會出現死循環的現象。感興趣的朋友們可以搭建一個類似的鏈路進行一下測試。

謝謝大家

Leave a Reply

Your email address will not be published. Required fields are marked *