在發起回源請求時攜帶的 Host 要求標頭預設為加速網域名稱,可通過本功能自訂回源 Host 要求標頭。
背景介紹
當存在多個加速網域名稱、每個網域名稱負責加速不同靜態資源時,常見的做法是搭建多個來源站點,以支援不同加速網域名稱的回源請求。若加速網域名稱數量較多而回源流量較少,重複建站會造成資源浪費,可通過虛擬網站技術解決該問題。
虛擬網站技術
虛擬網站技術是一種在單個 Web 服務器上提供多個網站服務的技術。伺服器使用不同的網域名稱或主機名稱區分和隔離不同的網站。當使用者請求訪問某個特定的網域名稱或主機名稱時,伺服器會根據請求中的網域名稱或主機名稱,將請求定向到相應的虛擬網站,從而提供對應的網站內容。
Nginx 相關實現
Nginx 支援通過 server 區塊配置多個虛擬網站,樣本如下:
server {
listen 80;
server_name example.org www.example.org;
...
}
server {
listen 80;
server_name example.net www.example.net;
...
}
server {
listen 80;
server_name example.com www.example.com;
...
}上述配置了 3 個虛擬網站,分別為 example.org、example.net、example.com。Nginx 使用 server_name 匹配 HTTP 要求頭中的 Host 欄位選擇虛擬網站;如果未匹配到任何一個虛擬網站,Nginx 會使用預設的虛擬網站提供服務(若未配置,預設為第一個 server 配置的預設網站)。
預設回源HOST
存取 URL 連結時,如果不指定 Host 欄位,該請求的 Host 欄位預設為存取 URL 連結的主機加連接埠部分。預設將 Host 欄位設定為加速網域名稱,也可根據來源站點的虛擬網站配置自訂 Host 欄位的預設值。
來源站點伺服器需支援通過 Host 要求標頭匹配不同的虛擬網站,否則該功能配置無法達到預期效果。
當來源站點使用 HTTPS 協議時,除了配置預設回源HOST,通常還需配置預設回源SNI。若回源HOST與回源SNI配置不一致(例如 HOST 為來源站點網域名稱、SNI 為加速網域名稱),可能導致 SSL 握手失敗或來源站點返回錯誤。建議將回源HOST和回源SNI設定為相同的網域名稱(通常為來源站點網域名稱或加速網域名稱,需與來源站點認證及虛擬機器主機配置匹配)。控制台的回源配置頁面,"預設回源HOST"和"預設回源SNI"是兩個獨立的配置項,需分別單擊修改配置進行設定。
操作步驟
登入阿里雲CDN平台。
在左側導覽列單擊域名管理。
在網域名稱列表中選擇目標網域名稱。
單擊回源配置 Tab。
回源HOST地區,單擊修改配置。
開啟回源HOST開關,選擇域名类型。
網域名稱類型 | 說明 |
加速網域名稱 | 以終端使用者訪問的加速網域名稱作為回源HOST。 |
來源站點網域名稱 | 以來源站點伺服器的網域名稱作為回源HOST。來源站點資訊為 IP 位址類型時,選項置灰,不可選擇。來源站點資訊為 OSS 網域名稱時,將會同步開啟預設回源HOST功能,並且設定網域名稱類型為來源站點網域名稱。 |
自訂網域名 | 以使用者指定的網域名稱作為回源HOST。自訂網域名需確保為已綁定的網域名稱,否則回源失敗。適用於來源站點綁定了多個網域名稱,且希望使用者從指定網域名稱擷取資源的情境。 |
當來源站點使用 HTTPS 協議時,除了配置回源HOST外,還需要在同一回源配置頁面配置預設回源SNI。建議將回源HOST和預設回源SNI設定為相同的網域名稱(通常為來源站點網域名稱),以避免因兩者不一致導致 SSL 握手失敗或來源站點拒絕服務。例如,如果回源HOST設定為來源站點網域名稱,而預設回源SNI設定為加速網域名稱,可能導致來源站點認證校正失敗。在控制台中,回源HOST和預設回源SNI是同一回源配置頁面上的兩個獨立配置項,分別通過修改配置按鈕進行配置。
單擊確定。
配置樣本
樣本一:來源站點類型為網域名稱
網域名稱 | 說明 |
加速網域名稱: | 功能預設關閉,可主動開啟預設回源HOST功能。 |
樣本二:來源站點類型為IP地址
網域名稱 | 說明 |
加速網域名稱: | 功能預設關閉,可主動開啟預設回源HOST功能。 |
樣本三:來源站點類型為OSS網域名稱
當來源站點資訊為 OSS 網域名稱時,將會同步開啟預設回源HOST功能,並且設定網域名稱類型為來源站點網域名稱。
網域名稱 | 說明 |
加速網域名稱: | 回源網域名稱類型說明: |
常見問題
配置預設回源HOST後,訪問加速網域名稱返回 404、500、502 或 403 錯誤怎麼辦?
請按以下步驟排查:
檢查回源HOST配置是否與來源站點虛擬機器主機配置匹配。如果來源站點通過
Host要求標頭區分虛擬網站(如 Nginx 的server_name),請確保 CDN 控制台中配置的回源HOST與來源站點期望的網域名稱一致。操作路徑:域名管理 > 網域名稱列表 > 選擇目標網域名稱 > 回源配置 > 在回源HOST地區單擊修改配置,將網域名稱類型設為來源站點網域名稱或加速網域名稱。檢查來源站點是否攔截了 CDN 節點 IP。如果回源HOST配置正確但仍有錯誤,請檢查來源站點的安全性原則是否攔截了 CDN 節點 IP,或來源站點防火牆、安全性群組是否拒絕了來自 CDN 的請求。
檢查 IIS 來源站點主機頭(Host Header)配置。若來源站點為 IIS 伺服器且設定了特定主機頭,CDN 回源請求中的 Host 欄位必須與該主機頭一致,否則可能返回 403 或 404 錯誤。若 IIS 未設定特定主機頭(允許 IP 直接存取),則無需特殊配置,但建議配置正確的主機頭以匹配 CDN 回源HOST。
重新整理 CDN 緩衝。如果來源站點之前返回的錯誤響應(如 404)被 CDN 邊緣節點緩衝,修改回源HOST配置後需要重新整理 CDN 緩衝以清除緩衝的錯誤響應。
配置回源HOST和 SNI 後出現 ERR_TOO_MANY_REDIRECTS(重新導向過多)或 502 錯誤怎麼辦?
出現 ERR_TOO_MANY_REDIRECTS 通常是 CDN 與來源站點同時開啟了 HTTPS 強制跳轉導致迴圈重新導向;出現 502 錯誤通常是回源協議或連接埠配置不當(如來源站點監聽非標準連接埠)。請按以下步驟排查:
關閉來源站點上的 HTTPS 強制跳轉功能。登入來源站點管理面板(如寶塔面板),找到 HTTPS 設定,關閉"強制HTTPS"或"HTTP到HTTPS跳轉"選項。
確認回源HOST和回源 SNI 配置一致且正確。在 CDN 控制台的回源配置頁面,確保回源HOST和預設回源SNI設定為正確的網域名稱(通常為來源站點網域名稱),且兩者值保持一致,使回源請求符合來源站點的預期。
檢查並調整 CDN 回源協議和連接埠。確保 CDN 的回源協議(HTTP 或 HTTPS)和回源連接埠與來源站點實際監聽配置匹配。如果來源站點僅監聽特定連接埠(如 HTTP 的 8080 連接埠),需要在 CDN 來源站點配置中設定對應的回源連接埠。
重新整理 CDN 緩衝。調整配置後,重新整理 CDN 緩衝以清除已緩衝的重新導向或錯誤響應。
訪問返回 403 Forbidden 錯誤怎麼辦?
當來源站點使用 Cloudflare、WAF 等安全服務時,403 Forbidden 錯誤常因回源HOST與來源站點期望的 Host 頭不一致,導致來源站點安全性原則攔截請求。請按以下步驟排查:
將預設回源HOST設定為來源站點實際綁定的網域名稱。在 CDN 控制台將回源HOST設定為來源站點實際綁定的網域名稱(而非加速網域名稱),確保與來源站點認證及虛擬機器主機配置匹配。
確認 WAF 配置中的網域名稱一致性。若來源站點為 WAF,需確保 CDN 回源請求中的 Host 頭與 WAF 配置的防護網域名稱一致,否則 WAF 會因網域名稱不匹配而攔截請求。
檢查來源站點訪問日誌。登入來源站點或安全服務管理面板,查看訪問日誌,確認是否有來自 CDN 節點 IP 的請求被攔截,並查看攔截原因。
重新整理 CDN 緩衝。修改配置後,重新整理 CDN 緩衝以清除已緩衝的 403 錯誤響應。
CDN 加速後頁面跳轉失敗或部分資源無法訪問怎麼辦?
可能原因是來源站點依賴 URL 參數或特定的 Host 頭進行邏輯判斷,而 CDN 預設行為可能導致參數丟失或 Host 頭不匹配。請按以下步驟排查:
檢查緩衝規則中的 URL 參數配置。在 CDN 控制台的緩衝配置中,檢查是否啟用了"忽略 URL 參數"功能。若來源站點依賴 URL 參數進行跳轉或邏輯判斷,啟用此功能可能導致參數丟失。建議取消"忽略 URL 參數"或選擇"保留指定參數"以保留來源站點所需的參數。
將回源HOST配置為來源站點期望的網域名稱。將回源HOST配置為加速網域名稱或來源站點期望的網域名稱,確保來源站點能正確識別請求主機頭從而處理跳轉邏輯。
執行目錄或 URL 重新整理。修改配置後,在 CDN 控制台的重新整理預熱頁面執行目錄重新整理或 URL 重新整理以使新配置生效。