本文介紹了為ALB監聽佈建網域名和路徑轉寄規則,以及轉寄動作配置重寫和重新導向路徑增強規則的詳細方法。
轉寄條件的網域名稱配置規則
網域名稱配置規則支援精準網域名稱、萬用字元網域名稱和Regex網域名稱。關於如何添加轉寄規則,請參見添加轉寄規則。
ALB按轉寄規則編號的優先順序順序逐條匹配,不會自動按網域名稱的精確程度排序。如果同一監聽下既有精準網域名稱規則又有萬用字元網域名稱規則,請將精準網域名稱的規則排在萬用字元規則之前(即編號更小的位置),以確保精準網域名稱優先匹配。此機制與CLB中"精確匹配 > 小範圍通配 > 大範圍通配"的自動排序不同。
網域名稱配置規則 | 說明 |
精準匹配及萬用字元 |
|
正則匹配 |
|
轉寄條件的路徑配置規則
路徑配置規則支援精準路徑、萬用字元路徑和Regex路徑。關於如何添加轉寄規則,請參見添加轉寄規則。
路徑配置規則 | 說明 |
精準匹配及萬用字元 |
|
正則匹配 |
|
重寫和重新導向中路徑的增強配置規則
轉寄條件的路徑配置Regex後,轉寄動作中的重寫和重新導向的路徑支援Regex替換。關於如何添加轉寄規則,請參見添加轉寄規則。
轉寄條件的路徑正則配置規則,請參見轉寄條件的路徑配置規則。
注意事項
轉寄條件中Regex中包含的半形圓括弧
( )需要與轉寄動作中重寫或重新導向路徑中$變數的個數保持一致。轉寄動作中重寫或重新導向的路徑中需要包含
${1}、${2}、${3}中的一個或多個,且這三個變數不支援使用其他字元代替。
替換原理
路徑匹配:用戶端發送請求,並匹配到某一條路徑轉寄規則的Regex。
提取與替換:按照Regex的規範提取,將前三個半形圓括弧
( )提取出來的內容分別儲存至${1}、${2}、${3}中,用於在轉寄動作的重寫或重新導向路徑中替換。拼接:按照轉寄動作中重寫或重新導向路徑的配置,對其中的
${1}、${2}、${3}進行值的替換,最終拼接成重寫或重新導向的實際路徑。
編號
步驟
樣本
1
配置轉寄規則中的轉寄條件和轉寄動作。
轉寄條件路徑:
/sys/(.*)/(.*)/aaa轉寄動作重寫或重新導向路徑:
/${1}/${2}
2
用戶端發送請求,並匹配路徑。
用戶端發送的請求路徑:
/sys/ccc/bbb/aaa匹配到的轉寄條件路徑:
/sys/(.*)/(.*)/aaa
3
提取與替換
按照Regex規範,轉寄條件路徑中的兩個
(.*)分別提取到ccc和bbb,並分別保留至轉寄動作中重寫或重新導向路徑中的${1}和${2}。${1}替換為ccc${2}替換為bbb
4
拼接路徑
後端伺服器接收到的路徑:
/ccc/bbb配置樣本
您可以根據注意事項和替換原理,在控制台上添加轉寄規則。
樣本1:轉寄動作為重寫和轉寄至
以路徑
sys/ccc/bbb/aaa被請求轉寄並重寫為/ccc/bbb為例,轉寄規則配置樣本如下:
類別
說明
如果以下條件全部匹配
路徑正則匹配
匹配說明
請求的路徑和設定的路徑根據Regex匹配。
輸入條件
只允許包含大小寫英文字母、數字和
.-_/=?~^*$:()[]+|這些特殊字元 。樣本
請求的路徑:
/sys/ccc/bbb/aaa區分大小寫:正則匹配輸入
/sys/(.*)/(.*)/aaa時,路徑匹配成功。不區分大小寫:正則匹配輸入
/sys/(.*)/(.*)/aaa,路徑匹配成功。
轉寄動作
重寫
網域名稱:
${host}路徑:
/${1}/${2}查詢:
${query}
說明查詢的內容指URL中問號後面的部分。
樣本:URL為
www.example.com/test/test1?x=1,查詢的內容為x=1。轉寄至
在伺服器組列表中選擇目標伺服器組。
樣本2:轉寄動作為重新導向
以路徑
sys/ccc/bbb/aaa被請求轉寄並重新導向為/ccc/bbb為例,轉寄規則配置樣本如下:
類別
說明
如果以下條件全部匹配
路徑正則匹配
匹配說明
請求的路徑和設定的路徑根據Regex匹配。
輸入條件
只允許包含大小寫英文字母、數字和
.-_/=?~^*$:()[]+|這些特殊字元 。樣本
請求的路徑:
/sys/ccc/bbb/aaa區分大小寫:正則匹配輸入
/sys/(.*)/(.*)/aaa時,路徑匹配成功。不區分大小寫:正則匹配輸入
/sys/(.*)/(.*)/aaa,路徑匹配成功。
轉寄動作
重新導向
協議:
$protocol網域名稱:
${host}連接埠:
${port}路徑:
/${1}/${2}查詢:
${query}狀態代碼:
301
常見問題
如何僅重寫網域名稱而不修改路徑?
如果您需要將請求的網域名稱重寫為另一個網域名稱,但保持路徑和查詢字串不變,可以按照以下方式配置:
轉寄條件:網域名稱設定為原始網域名稱,如
old.example.com。轉寄動作:重寫,網域名稱設定為新網域名稱(如
new.example.com),路徑設定為${path}(保持原路徑),查詢設定為${query}(保持原查詢字串)。同時配置轉寄至目標伺服器組。
如何為路徑添加首碼?
如果您需要在原始路徑前添加版本號碼等首碼,例如將/users/list重寫為/v2/users/list,可以按照以下方式配置:
轉寄條件:路徑正則匹配設定為
^/(.*)。轉寄動作:重寫,路徑設定為
/v2/${1}。同時配置轉寄至目標伺服器組。
配置後,請求/users/list將被重寫為/v2/users/list後轉寄至後端伺服器。
如何在ALB中配置轉寄規則以去除路徑中的特定首碼並支援多層路徑匹配?
在使用ALB時,如需配置轉寄規則將特定網域名稱和路徑的請求進行處理,以去除特定路徑首碼並支援匹配後續多層路徑,您可以參考以下樣本進行配置:
樣本:ALB轉寄 www.example.com/api/aaa/bbb/...的訪問請求時,需要在路徑中去除 /api 部分,同時支援匹配 /api 後的多層路徑。
您可以使用重寫或重新導向方式,在配置路徑時,使用正則匹配^/api/(.*),以匹配所有以/api開頭的路徑,然後轉寄動作配置路徑為/${1},表示替換/api後面的所有路徑。具體配置如下:
重寫

重新導向

相關文檔
如果您需要為ALB監聽配置其他監聽轉寄規則,請參見配置監聽轉寄規則。