作者:烨爍
CDN的配置項中包括源站設定和回源host設定兩個參數。這兩個參數概念可能會出現混淆并且設定錯誤會導緻通路出現異常,是以本文主要向大家介紹源站設定和回源host兩個參數的概念和設定方法。
産品文檔參考:
CDN回源HOST一、基本概念
源站設定的詳細設定方法在
【CDN 常見問題】CDN 接入配置及常見問題文檔中已經詳細說明了各業務類型的源站設定的方法。從該文檔中可以知曉源站設定不管是什麼類型,其實其意義都是需要将該域名解析成IP後根據該IP回源到源站伺服器上。而真正是哪個站點提供服務其實與源站設定是沒有關系的。是以這裡需要回源Host的概念。
回源Host其意義表示為CDN節點回源請求頭中帶有的Host字段。在HTTP 1.1協定中請求頭中必須要有Host字段,根據HTTP RFC官方文檔說明:
The Host field value MUST represent the naming authority of the origin server or gateway given by the original URL.
即表示了Host字段的值表示的是原始URL給出的伺服器或者網關的命名授權。
而當源站設定解析得到的IP對應的伺服器上有多個站點配置了不同的命名Host,那麼CDN回源就會根據回源Host字段決定是由哪個站點提供服務。
舉例說明,如下是一段nginx配置server的常用配置方法,從該配置上我們可以檢視到該伺服器上配置一個名為www.aliyun.com的站點監聽伺服器的80端口,并設定了該站點的根目錄路徑。
server {
listen 80; #default_server;
server_name www.aliyun.com;
location / {
root /alidata/www/www-aliyun-com/;
}
}
然後建立cdn加速域名cdntest1.aliyun.com,設定其源站為www.aliyun.com,并設定回源端口為80端口。此時如果設定回源host為關閉或者設定為cdntest1.aliyun.com時,将導緻CDN回源時到源站查找server_name為cdntest1.aliyun.com的站點,而由于源站配置配置對應的站點導緻出現4XX的錯誤了。是以此時正确的配置應該将回源host改成www.aliyun.com,這樣才可以找到對應的server并到其location目錄中查找對應的檔案傳回給CDN節點。

圖1. CDN的回源Host正确配置
二、CDN加速OSS的回源Host設定
在CDN加速OSS的經典場景中回源Host的設定是有兩種方法,下面逐一介紹:
1、設定回源Host為CDN域名本身。當設定回源Host為加速域名時那麼要求其域名是必須在OSS的域名管理中添加該域名後才可以設定的,否則會導緻CDN回源無法查找到該名稱對應的是哪個bucket導緻無法回源。
圖2. OSS綁定域名示意圖
2、設定回源Host為OSS域名本身。這種情況下OSS是不需要做任何的調整即可保證CDN正常回源到該bucket擷取檔案。但是此種設定時在OSS的日志中記錄的Sync Request記錄項為-,而不會記錄為CDN(OSS日志格式請參考:
OSS日志格式),是以建議在CDN加速OSS的場景中建議以第一種方式。