開發與維運

【CDN 常見問題】CDN回源Host的意義

作者:燁爍

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節點。

image.png

圖1. CDN的回源Host正確配置

二、CDN加速OSS的回源Host設置

在CDN加速OSS的經典場景中回源Host的設置是有兩種方法,下面逐一介紹:
1、設置回源Host為CDN域名本身。當設置回源Host為加速域名時那麼要求其域名是必須在OSS的域名管理中添加該域名後才可以設置的,否則會導致CDN回源無法查找到該名稱對應的是哪個bucket導致無法回源。
image.png

圖2. OSS綁定域名示意圖

2、設置回源Host為OSS域名本身。這種情況下OSS是不需要做任何的調整即可保證CDN正常回源到該bucket獲取文件。但是此種設置時在OSS的日誌中記錄的Sync Request記錄項為-,而不會記錄為CDN(OSS日誌格式請參考:OSS日誌格式),因此建議在CDN加速OSS的場景中建議以第一種方式。

Leave a Reply

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