如果您需要自訂ALB監聽轉寄規則,並希望按照指定規則將用戶端請求轉寄至一個或多個伺服器組中的後端伺服器,及後端響應結果按照指定規則轉寄給用戶端,可參考本文配置監聽轉寄規則。
轉寄規則概述
您可以為ALB執行個體的一個監聽添加多條轉寄規則。對於一條轉寄規則,從轉寄資料鏈路方向分為請求方向轉寄規則和回應程式向轉寄規則,基礎版執行個體僅支援要求方向轉寄規則,標準版和WAF增強版執行個體支援要求方向和回應程式向轉寄規則。同時,一條轉寄規則由兩部分組成:轉寄條件(condition)和轉寄動作(action)。轉寄條件實現對資料包的匹配,轉寄動作按照匹配結果執行對應的資料轉寄形式。您可以在一條轉寄規則中定義一個或多個轉寄條件以及一個或多個轉寄動作。
對於標準版和WAF增強版的ALB執行個體,用戶端發起請求至ALB,ALB將請求資料通過請求方向轉寄規則處理後發送至對應的後端伺服器,後端伺服器的響應資料再經過ALB的回應程式向轉寄規則處理後,返回給用戶端。
請求方向轉寄規則中只能佈建要求方向條件和動作。
回應程式向轉寄規則中可以設定回應程式向的條件和動作,同時也可以佈建要求方向的條件。
一個轉寄規則必須包含一條轉寄至、重新導向至或返回固定響應類型的轉寄動作,以保證用戶端的請求不會中斷轉寄動作。
說明基礎版ALB執行個體僅支援要求方向轉寄規則,標準版和WAF增強版ALB執行個體支援要求方向和回應程式向轉寄規則。
表 1. 基礎版執行個體支援的轉寄規則
分類
轉寄條件
轉寄動作
請求方向
網域名稱、路徑、HTTP標題
轉寄至、重新導向至
表 2. 標準版和WAF增強版執行個體支援的轉寄規則
分類
轉寄條件
轉寄動作
請求方向
網域名稱、路徑、HTTP標題、查詢字串、HTTP要求方法、Cookie和SourceIp。
轉寄至、重新導向至、返回固定響應、重寫、寫入Header、刪除Header、限速、流量鏡像至和跨域。
回應程式向
請求方向條件(選填):網域名稱、路徑、HTTP標題、查詢字串、HTTP要求方法、Cookie和SourceIp。
回應程式向條件:響應中的狀態代碼和響應中的標題。
返回固定響應、寫入Header和刪除Header
匹配原理
匹配策略:每個用戶端請求會按照轉寄規則的優先順序順序(轉寄規則編號的數值越小,優先順序越高)逐條匹配,一旦能夠匹配到一條轉寄規則,立即按照當前轉寄規則轉寄流量。
如果在請求方向未匹配到其他轉寄規則,用戶端請求將會按照預設轉寄規則轉寄。
如果在回應程式向未匹配到轉寄規則,ALB會直接將響應返回給用戶端。
路徑如果配置為/*
,表示匹配所有路徑的請求。如果您需要一條兜底的轉寄規則用於處理非預期的請求,轉寄條件中路徑可以配置為/*
,轉寄動作配置為返回固定響應,狀態代碼設定為404或403,配置完成後將該轉寄規則拖拽至倒數第二位置即可。
轉寄規則優先順序:轉寄規則按照優先順序從高到低排序,轉寄規則編號的數值越小優先順序越高。
預設轉寄規則:建立監聽後,系統會在請求方向自動建立一條預設轉寄規則,該轉寄規則轉寄條件為-
,表示匹配所有用戶端請求;轉寄動作為轉寄至監聽配置的伺服器組。
預設轉寄規則不支援刪除,支援更改轉寄動作的伺服器組。預設轉寄規則的優先順序最低且不支援調整優先順序。
使用限制
基礎版ALB執行個體轉寄條件只支援網域名稱、路徑和HTTP標題,轉寄動作只支援轉寄至和重新導向至,如需使用其他轉寄規則請升級至標準版或WAF增強版ALB執行個體,具體操作,請參見ALB執行個體變更配置。
一條轉寄規則可添加的動作條目數、匹配條件條目數、可包含萬用字元的條目數配額,請參見轉寄規則配額。
前提條件
添加轉寄規則
您已在建立監聽時定義了預設轉寄規則。此外,您可以在建立監聽後添加轉寄規則。
- 登入應用型負載平衡ALB控制台。
在頂部功能表列處,選擇目標ALB執行個體所屬的地區。
在執行個體頁面,單擊目標執行個體ID。
單擊監聽頁簽,找到目標監聽,然後在操作列單擊查看/編輯轉寄規則。
在轉寄規則頁簽,選擇請求方向轉寄規則或回應程式向轉寄規則,然後單擊插入新規則。
在插入轉寄規則地區,配置下表參數,然後單擊確定。
說明同一個轉寄條件的不同轉寄動作之間為“或”的關係。即如果一個轉寄條件配置了多個轉寄動作,則請求流量匹配任何一個轉寄動作都可以實現轉寄。
不同轉寄條件之間為“與”的關係。即如果配置了多個轉寄條件,則請求流量必須同時滿足所有的轉寄條件才能實現轉寄。
請求方向轉寄規則
參數
描述
規則名稱
輸入自訂規則名稱,若不輸入系統會自動產生。
一個轉寄規則只能有一個規則名稱。
轉寄條件
選擇條件類型添加以下條件,您也可以單擊+添加轉寄條件添加多個轉寄條件:
網域名稱:添加一個或多個網域名稱。網域名稱匹配規則長度限制為3~128個字元,支援星號(*)和半形問號(?)作為萬用字元使用(其中*可以代表任何字串,?僅代表單個字串),包括精準網域名稱、萬用字元網域名稱、Regex網域名稱。關於網域名稱配置規則的更多資訊,請參見轉寄條件的網域名稱配置規則。
樣本:
*.example.com
。路徑:添加一條或多條路徑。包括Regex類型的路徑和非Regex類型的路徑。關於路徑配置規則的更多資訊,請參見轉寄條件的路徑配置規則。
樣本:URL為
www.example.com/test/test1?x=1&y=2
時可配置為/test/*
。HTTP標題:在鍵是欄位輸入HTTP標題的名稱,值是欄位輸入HTTP標題的內容,可添加多條標題內容。HTTP標題的索引值長度限制為1~40個字元,只允許包含大小寫英文字母、數字、底線(_)和中劃線(-)。HTTP標題的值長度限制為1~128個字元,支援可列印字元,開頭和結尾不可為空格。
樣本:鍵
user-agent
,值*Mozilla/4.0*
。查詢字串:添加一個或多個查詢字串的鍵和值對。鍵的長度為1~100個字元,值的長度為1~128個字元,支援小寫字母、萬用字元星號(*)和半形問號(?)等可見字元,不支援空格和
#[]{}\|<>&
等特殊字元。樣本:URL為
www.example.com/test/test1?x=1&y=2
時可配置為x:1
或y:2
。HTTP要求方法:添加一個或多個HTTP要求方法。包括:HEAD、GET、POST、OPTIONS、PUT、PATCH、DELETE。
Cookie:添加一個或多個Cookie。鍵的長度為1~100個字元,值長度為1~128個字元,支援小寫字母、萬用字元星號(*)和半形問號(?)等可見字元,不支援空格和[]{}<>\#|&等特殊字元。
樣本:鍵
key
,值value
。SourceIp:添加一個或多個IP地址或者IP位址區段,不支援0.0.0.0/x類型的位址區段,x為任一數字。
樣本:
192.168.1.1/32
轉寄動作
選擇動作類型添加以下動作,您也可以單擊+添加動作添加多個轉寄動作。
轉寄至:在伺服器組列表中選擇目標伺服器組。目前支援的伺服器群組類型包括伺服器類型、IP類型和Function Compute類型,您可以添加多個伺服器組並開啟伺服器組間會話保持(該功能需確保所有添加的伺服器組開啟了會話保持功能)。
重新導向至:在協議和狀態代碼列表選擇一個協議和一個狀態代碼,以及分別輸入跳轉的目的網域名稱、連接埠、路徑和查詢字串。該轉寄動作中協議、網域名稱、連接埠、路徑、查詢值不能全部為預設值或為空白。
說明重新導向至中關於路徑的增強配置規則,請參見重寫和重新導向中路徑的增強配置規則。
${x}表示引用請求中的響應值,如果保持預設,表示使用請求中的預設值。
關於狀態代碼的更多資訊,請參見HTTP協議常用標準狀態代碼說明。
返回固定響應:輸入響應狀態代碼,然後選擇填寫響應本文類型和響應本文。響應狀態代碼必須是2xx、4xx、5xx的數字型字串,x為任一數字。
重寫:分別輸入跳轉的目標網域名稱、路徑和查詢字串。重寫中關於路徑配置規則的更多資訊,請參見重寫和重新導向中路徑的增強配置規則。
寫入Header:輸入頭欄位名稱和頭欄位內容,將覆蓋請求中已有的頭變數。其中標題索引值長度為1~40字元,支援大小寫英文字母、數字、底線(_)和中劃線(-),標題的值長度限制為1~128個字元,支援可列印字元、大小寫英文字母,開頭和結尾不可為空格。
刪除Header:輸入頭欄位名稱,將刪除請求Header中的該索引值對內容。
說明請求方向寫入Header和刪除Header不允許將頭欄位名稱設定為以下欄位(不區分大小寫):
slb-id
、slb-ip
、x-forwarded-for
、x-forwarded-proto
、x-forwarded-eip
、x-forwarded-port
、x-forwarded-client-srcport
、connection
、upgrade
、content-length
、transfer-encoding
、keep-alive
、te
、host
、cookie
、remoteip
、authority
。限速:請根據需要配置以下參數。
QPS(總限速):輸入每秒請求數,取值範圍:1~1000000。
QPS(基於用戶端源IP限速):輸入基於用戶端源IP限速,取值範圍:1~1000000。同時配置QPS(總限速)和QPS(基於用戶端源IP限速)時,基於用戶端源IP限速值要小於總限速值。
說明轉寄動作是限速時,必須要與轉寄至目標伺服器組的轉寄動作配合使用才會生效。
限速+轉寄至:限速值以內的請求被轉寄至目標伺服器組,如果每秒請求數(QPS)超出限速值,將返回503狀態代碼給用戶端。
限速+重新導向至+轉寄至:在限速值以內的請求將被轉寄至目標伺服器組。如果每秒請求數(QPS)超出限速值,則請求將被重新導向至新的地址。
限速+返回固定響應+轉寄至:在限速值以內的請求將被轉寄至目標伺服器組。如果每秒請求數(QPS)超出限速值,將返回預先設定的固定響應內容給用戶端。
當X-Forwarded-For請求標題中包含多個IP地址時,例如
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …
,最左邊的地址是真實用戶端IP,如果您需要使用ALB轉寄規則中基於SourceIp匹配和QPS(基於用戶端源IP限速)功能,您需要在監聽開啟尋找真實用戶端源IP開關,以便ALB從X-Forwarded-For頭欄位中尋找真實用戶端源IP。更多資訊,請參見添加HTTP監聽和添加HTTPS監聽。
流量鏡像至:在伺服器組列表中選擇目標伺服器組。支援選擇伺服器類型和IP類型的後端伺服器組。
流量鏡像至IP類型的後端伺服器組時,請注意:
只支援掛載私網伺服器,不支援掛載公網伺服器。
不支援掛載同一個VPC內的ALB、NLB或CLB執行個體。
不支援轉寄路徑存在環路的情境,ALB會在每個請求中添加ALICLOUD-ALB-TRACE的HTTP Header來探測環路。如果發現環路時,ALB會停止向後端轉寄請求並回複463的狀態代碼,以避免網路風暴導致的資源耗盡。
支援企業版轉寄路由器和Express Connect實現跨域轉寄,不支援基礎版轉寄路由器。
一張雲企業網中,一個地區只能有一個VPC內的一個或多個ALB實現跨地區掛載伺服器。
無法實現同一個地區多個VPC內的ALB使用同一個轉寄路由器訪問後端服務。
無法實現同一個地區多個VPC內的ALB使用多個轉寄路由器訪問同一個後端服務。
ALB與後端伺服器的流量僅支援通過系統路由錶轉發,暫不支援通過VPC自訂路由錶轉發。
跨域:用戶端發送的請求URL的協議、網域名稱或者連接埠三者之間任意一個與當前返回的頁面URL不同即為跨域。請求包括簡單請求和預檢請求。
允許的訪問來源:設定允許通過瀏覽器訪問服務資源的網站。
允許的方法:選擇跨域訪問時允許的HTTP方法。包括:GET,POST、PUT、DELETE、HEAD、OPTIONS、PATCH。
允許的要求標頭部:除了瀏覽器內建的基礎Header,設定跨域訪問時允許的Header。
允許的回應標頭部:允許瀏覽器、JavaScript指令碼訪問的回應標頭部。
允許的攜帶憑證:跨域訪問時是否允許攜帶的憑證資訊。取值:允許或不允許,預設允許。
瀏覽器緩衝時間:對於預檢請求,設定OPTIONS預檢請求在瀏覽器的最大緩衝時間。單位:秒。取值範圍:-1~172800。
回應程式向轉寄規則
參數
描述
規則名稱
輸入自訂規則名稱,若不輸入則系統自動產生。
一個轉寄規則只能有一個規則名稱。
如果滿足以下請求方向條件(選填)
選擇請求方向的轉寄條件,您也可以單擊+添加請求方向轉寄條件添加多個請求方向的轉寄條件。具體操作,請參見添加轉寄規則步驟中請求方向轉寄規則的轉寄條件配置。
且滿足以下回應程式向條件
選擇回應程式向的轉寄條件,您也可以單擊+添加回應程式向轉寄條件添加多個回應程式向轉寄條件:
響應中的狀態代碼:返回給用戶端響應中的狀態代碼,取值100~599。
支援輸入範圍,多個狀態代碼用半形逗號(,)分隔,例如:200-233,301。
響應中的標題:響應中的HTTP標題。在鍵是欄位輸入HTTP標題的名稱,值是欄位輸入HTTP標題的內容,可添加多條標題內容。
轉寄動作
選擇回應程式向的動作類型,您也可以單擊+添加動作添加多個回應程式向的轉寄動作:
返回固定響應:輸入響應狀態代碼,然後選擇填寫響應本文類型和響應本文。響應狀態代碼必須是2xx、4xx、5xx的數字型字串,x為任一數字。
寫入Header:輸入回應程式向頭欄位名稱和頭欄位內容,將覆蓋響應報文中已有的頭變數。
刪除Header:輸入回應程式向頭欄位名稱,將刪除響應報文中對應的索引值對內容。
說明回應程式向寫入Header和刪除Header不允許將頭欄位名稱設定為以下欄位(不區分大小寫):
connection
、upgrade
、content-length
、transfer-encoding
。
添加AScript可程式化指令碼
您可以單擊+在規則執行後添加可程式化指令碼添加AScript可程式化指令碼轉寄規則。具體操作,請參見步驟二:添加AScript可程式化指令碼定義的轉寄規則。
說明AScript可程式化指令碼轉寄規則功能必須滿足以下條件才能使用:
建立的ALB執行個體版本為標準版及以上版本。
編輯轉寄規則
- 登入應用型負載平衡ALB控制台。
在頂部功能表列處,選擇目標ALB執行個體所屬的地區。
在執行個體頁面,單擊目標執行個體ID。
單擊監聽頁簽,找到目標監聽,然後在操作列單擊查看/編輯轉寄規則。
在轉寄規則頁簽,選擇請求方向轉寄規則或回應程式向轉寄規則,然後選中您要編輯的規則,單擊右上方編輯。
修改完成後,單擊儲存。
重新定序
轉寄規則按照優先順序從高到低開始匹配,數值越小優先順序越高。您可以隨時更改非預設規則的優先順序。您不能更改預設規則的優先順序。
- 登入應用型負載平衡ALB控制台。
在頂部功能表列處,選擇目標ALB執行個體所屬的地區。
在執行個體頁面,單擊目標執行個體ID。
單擊監聽頁簽,找到目標監聽,然後在操作列單擊查看/編輯轉寄規則。
在轉寄規則頁簽,選擇請求方向轉寄規則或回應程式向轉寄規則,將目標轉寄規則移動至目標位置,然後單擊儲存優先順序。
刪除轉寄規則
您可以隨時刪除監聽的非預設轉寄規則,預設轉寄規則不支援刪除。當您刪除監聽時,也會刪除它的所有轉寄規則。
- 登入應用型負載平衡ALB控制台。
在頂部功能表列處,選擇目標ALB執行個體所屬的地區。
在執行個體頁面,單擊目標執行個體ID。
單擊監聽頁簽,找到目標監聽,然後在操作列單擊查看/編輯轉寄規則。
在轉寄規則頁簽,選擇請求方向轉寄規則或回應程式向轉寄規則,然後選中您要刪除的轉寄規則,單擊刪除。
在彈出的對話方塊中,單擊確定刪除。
相關文檔
如果您想詳細瞭解轉寄條件中網域名稱和路徑的配置規則,及轉寄動作中重寫和重新導向的路徑增強配置規則,請參見佈建網域名和路徑的轉寄規則。
如果您需要使用ALB將HTTP訪問重新導向至HTTPS,請參見使用ALB將HTTP訪問重新導向至HTTPS。
如果您需要使用ALB流量鏡像功能實現模擬壓測,請參見使用ALB流量鏡像功能實現模擬壓測。
如果您需要使用ALB實現灰階發布,請參見使用ALB實現灰階發布。
CreateRule:建立轉寄規則。
CreateRules:大量建立轉寄規則。
DeleteRule: 刪除轉寄規則。
DeleteRules:大量刪除轉寄規則。
ListRules:查詢轉寄規則。
UpdateRuleAttribute:更新轉寄規則屬性。
UpdateRulesAttribute:批次更新轉寄規則屬性。