如果您需要自定義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控制臺。
在頂部菜單欄處,選擇目標ALB實例所屬的地域。
在實例頁面,單擊目標實例ID。
單擊監聽頁簽,找到目標監聽,然后在操作列單擊查看/編輯轉發規則。
在轉發規則頁簽,選擇請求方向轉發規則或響應方向轉發規則,然后單擊插入新規則。
在插入轉發規則區域,配置下表參數,然后單擊確定。
說明同一個轉發條件的不同轉發動作之間為“或”的關系。即如果一個轉發條件配置了多個轉發動作,則請求流量匹配任何一個轉發動作都可以實現轉發。
不同轉發條件之間為“與”的關系。即如果配置了多個轉發條件,則請求流量必須同時滿足所有的轉發條件才能實現轉發。
請求方向轉發規則
參數
描述
規則名稱
輸入自定義規則名稱,若不輸入系統會自動生成。
一個轉發規則只能有一個規則名稱。
轉發條件
選擇條件類型添加以下條件,您也可以單擊+添加轉發條件添加多個轉發條件:
域名:添加一個或多個域名。域名匹配規則長度限制為3~128個字符,支持星號(*)和半角問號(?)作為通配符使用(其中*可以代表任何字符串,?僅代表單個字符串),包括精準域名、通配符域名、正則表達式域名。關于域名配置規則的更多信息,請參見轉發條件的域名配置規則。
示例:
*.example.com
。路徑:添加一條或多條路徑。包括正則表達式類型的路徑和非正則表達式類型的路徑。關于路徑配置規則的更多信息,請參見轉發條件的路徑配置規則。
示例: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類型和函數計算類型,您可以添加多個服務器組并開啟服務器組間會話保持(該功能需確保所有添加的服務器組開啟了會話保持功能)。
重定向至:在協議和狀態碼列表選擇一個協議和一個狀態碼,以及分別輸入跳轉的目的域名、端口、路徑和查詢字符串。該轉發動作中協議、域名、端口、路徑、查詢值不能全部為默認值或為空。
說明重定向至中關于路徑的增強配置規則,請參見重寫和重定向中路徑的增強配置規則。
${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的狀態碼,以避免網絡風暴導致的資源耗盡。
支持企業版轉發路由器和高速通道實現跨域轉發,不支持基礎版轉發路由器。
一張云企業網中,一個地域只能有一個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:批量更新轉發規則屬性。