阿里云CDN默認支持攜帶一些例如客戶端IP地址的請求頭,也支持自定義配置。如果您需要改寫用戶回源請求中的HTTP Header,可以通過配置回源HTTP請求頭實現,支持增加、刪除、變更或替換回源HTTP請求頭,滿足更多實際業務需求。
背景信息
HTTP請求頭是HTTP的請求消息頭的組成部分之一,可攜帶特定的請求參數信息并傳遞給服務器。
當CDN節點請求回源站拉取資源時,源站可獲取到回源請求頭中攜帶的信息。您可以通過該功能,改寫用戶回源請求中的HTTP Header信息,攜帶特定的參數信息給源站,實現特定業務需求。例如,通過X-Forwarded-For頭部攜帶真實客戶端IP至源站。
源站服務器通過用戶回源請求中攜帶的X-Forwarded-For頭部獲取客戶端真實IP的方式,請參見獲取客戶端真實IP。
注意事項
回源請求指用戶請求中通過CDN回源的HTTP消息。回源HTTP請求頭配置只會影響通過CDN回源的HTTP消息,對于CDN節點直接響應給用戶的HTTP消息不做修改。
不支持對泛域名配置回源HTTP請求頭。
阿里云CDN默認支持攜帶以下HTTP請求頭回源,您無需額外配置。
回源HTTP Header
說明
示例
Ali-Cdn-Real-Ip
客戶端與CDN節點建連時使用的真實IP。
Ali-Cdn-Real-Ip:192.168.0.1
X-Forwarded-For
客戶端請求經過CDN節點回源的整個鏈路上,包括客戶端和CDN節點的IP信息。
X-Forwarded-For:192.168.0.1, 172.16.0.1
X-Client-Scheme
客戶端發送到CDN節點的應用層請求使用的協議,例如:HTTP、HTTPS。
X-Client-Scheme:http
Host
客戶端請求在回源時實際訪問的源站Web站點域名。
Host:example.com
Via
客戶端請求經過的所有CDN節點的名稱。
Via:cn2546-10.l1, cache1.cn2546-10, l2cn2547-7.l2, cache1.l2cn2547-7
回源HTTP請求頭的值如果配置的是某個變量,那么實際使用的時候會被設置為具體的變量值,以下為可以使用的變量。
名稱
回源HTTP Header
說明
示例
Ali-Cdn-Real-Port
$http_Ali_Cdn_Real_Port
在回源頭里面添加客戶端真實端口信息,向源站傳遞客戶端端口信息。
Ali-Cdn-Real-Port:80
Ali_Cdn_Real_Ip
$http_Ali_Cdn_Real_Ip
在回源頭里面添加客戶端真實IP信息,向源站傳遞客戶端IP地址信息。
Ali-Cdn-Real-Ip:192.168.0.1
x_forwarded_for
$proxy_add_x_forwarded_for
在回源頭里面添加X-Forwarded-For信息,向源站傳遞客戶端IP和中間的代理服務器IP。
X-Forwarded-For:192.168.0.1, 172.16.0.1
操作步驟
登錄CDN控制臺。
在左側導航欄,單擊域名管理。
在域名管理頁面,找到目標域名,單擊操作列的管理。
在指定域名的左側導航欄,單擊回源配置。
單擊回源HTTP請求頭頁簽。
單擊添加。
配置回源HTTP請求頭信息。
重要當不同的操作方式同時作用于同一個回源請求頭參數時,會存在操作沖突。此時按照操作類型的優先級來執行,優先級順序為替換>增加>變更和刪除。例如,當增加和刪除操作同時作用于同一個參數時,會先增加再刪除。
增加請求頭參數
配置項
示例
說明
請求頭操作
增加
在回源HTTP請求中增加指定的請求頭參數。
自定義請求頭參數
自定義回源請求頭
選擇自定義回源請求頭或選擇已經預設好的請求頭參數。
自定義請求頭名稱
x-code
自定義請求頭名稱為x-code。
請求頭值
key1, key2
一個請求頭參數中可以配置多個值,多個值用英文逗號(,)分隔。
是否允許重復
允許
允許:可以添加重復的請求頭參數。例如
x-code:key1
,x-code:key2
。不允許:添加同一個請求頭參數,新值將覆蓋舊值。例如先添加
x-code:key1
,再添加x-code:key2
,最終的值為x-code:key2
。
規則條件
不使用
規則條件能夠對用戶請求中攜帶的各種參數信息進行識別,以此來決定某個配置是否對該請求生效。
不使用:不使用規則條件。
選擇已配置的規則引擎,新增或修改規則引擎請參見規則引擎。
刪除請求頭參數
配置項
示例
說明
請求頭操作
刪除
刪除所有與請求頭參數名稱匹配的參數值,無論是否有重復的請求頭參數。
自定義請求頭參數
自定義回源請求頭
選擇自定義回源請求頭或選擇已經預設好的請求頭參數。
自定義請求頭名稱
x-code
自定義請求頭名稱為x-code。
規則條件
不使用
規則條件能夠對用戶請求中攜帶的各種參數信息進行識別,以此來決定某個配置是否對該請求生效。
不使用:不使用規則條件。
選擇已配置的規則引擎,新增或修改規則引擎請參見規則引擎。
變更請求頭參數
配置項
示例
說明
請求頭操作
變更
當請求頭參數不存在重復時,可以正常變更參數,如果有多個重復的請求頭參數,則不允許變更。
自定義請求頭參數
自定義回源請求頭
選擇自定義回源請求頭或選擇已經預設好的請求頭參數。
自定義請求頭名稱
x-code
自定義請求頭名稱為x-code。
請求頭變更為
key1, key3
一個請求頭參數中可以配置多個值,多個值用英文逗號(,)分隔。
規則條件
不使用
規則條件能夠對用戶請求中攜帶的各種參數信息進行識別,以此來決定某個配置是否對該請求生效。
不使用:不使用規則條件。
選擇已配置的規則引擎,新增或修改規則引擎請參見規則引擎。
替換請求頭參數
配置項
示例
說明
請求頭操作
替換
當請求頭參數不存在重復時,可以正常替換參數,如果有多個重復的請求頭參數,則不允許替換。
自定義請求頭參數
自定義回源請求頭
選擇自定義回源請求頭或選擇已經預設好的請求頭參數。
自定義請求頭名稱
x-code
自定義請求頭名稱為x-code。
查找
key
正則表達式查找需要替換的參數值。
替換為
abc
正則表達式替換需要替換的參數值。
匹配
匹配所有
匹配所有:所有匹配上的值都會被替換。例如
x-code:key1,key2,key3
,正則匹配值key替換為abc,替換后的結果為x-code:abc1,abc2,abc3
。僅匹配第一個:只有第一個匹配上的值會被替換。例如
x-code:key1,key2,key3
,正則匹配值key替換為abc,替換后的結果為x-code:abc1,key2,key3
。
規則條件
不使用
規則條件能夠對用戶請求中攜帶的各種參數信息進行識別,以此來決定某個配置是否對該請求生效。
不使用:不使用規則條件。
選擇已配置的規則引擎,新增或修改規則引擎請參見規則引擎。
單擊確定。