在發起回源請求時攜帶的 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,重新導向次數過多 ERR_TOO_MANY_REDIRECTS,或頁面跳轉失敗),排查方法請參見回源排障指南。