全部產品
Search
文件中心

:ALB網關路由最佳實務

更新時間:Sep 12, 2025

SAE應用預設無法訪問公網,公網也無法訪問私網,為瞭解決這一問題,您可以為應用配置ALB網關路由,以實現公網能夠正常訪問SAE應用。 本文主要配置ALB網關路由的重要參數配置說明。

轉寄規則概述

您可以在SAE側為ALB執行個體的一個監聽添加多條轉寄規則。對於一條轉寄規則,從轉寄資料鏈路方向分為請求方向轉寄規則和回應程式向轉寄規則,在SAE側只能為ALB執行個體僅支援要求方向轉寄規則,如果您需要配置回應程式向轉寄規則,需要在SLB側配置。

一條轉寄規則由兩部分組成:轉寄條件(condition)和轉寄動作(action)。轉寄條件實現對資料包的匹配,轉寄動作按照匹配結果執行對應的資料轉寄形式。您可以在一條轉寄規則中定義一個或多個轉寄條件以及一個或多個轉寄動作。

  • 對於標準版和WAF增強版的ALB執行個體,用戶端發起請求至ALBALB將請求資料通過請求方向轉寄規則處理後發送至對應的後端伺服器,後端伺服器的響應資料再經過ALB回應程式向轉寄規則處理後,返回給用戶端。

    • 請求方向轉寄規則中只能佈建要求方向條件和動作。

    • 回應程式向轉寄規則中可以設定回應程式向的條件和動作,同時也可以佈建要求方向的條件。

  • 一個轉寄規則必須包含一條轉寄至、重新導向至或返回固定響應類型的轉寄動作,以保證用戶端的請求不會中斷轉寄動作。

功能入口

  1. 登入SAE控制台,在左側導覽列單擊命名空間,然後選擇目標地區。

  2. 命名空間頁面,單擊目標命名空間名稱。

  3. 在目標命名空間的基礎資訊頁面,在左側導覽列單擊網關路由,然後單擊建立網關路由

    本文只介紹關鍵功能的配置。具體建立網關路由的介紹,請參見為應用設定路由規則(ALB)

轉寄條件配置介紹

在SAE側,支援配置的轉寄條件為網域名稱訪問連接埠Path

網域名稱配置介紹

網域名稱配置規則

說明

精準匹配及萬用字元

  • 匹配說明

    • 精準匹配:請求的網域名稱和設定的網域名稱需完全一致。

    • 萬用字元匹配:請求的網域名稱和設定的網域名稱除萬用字元外需完全一致。

  • 輸入條件

    網域名稱長度限制為3~128個字元,只允許包含大小寫英文字母、數字和.-?=~_+\^*!$&|()[]這些特殊字元,支援星號(*)和半形問號(?)作為萬用字元使用。

  • 樣本

    請求的網域名稱:www.example.com

    • 精準匹配:輸入www.example.com匹配成功。

    • 萬用字元匹配:輸入*.example.comwww.example.*匹配成功。

正則匹配

  • 匹配說明

    請求的網域名稱和設定的網域名稱根據Regex匹配。

  • 輸入條件

    網域名稱長度限制為3~128個字元,只允許包含大小寫英文字母、數字和.-?=~_-+\^*!$&|()[]這些特殊字元。

  • 樣本

    請求的網域名稱:www.example.com

    不區分大小寫:正則輸入^www.example.com$匹配成功。

Path配置介紹

路徑配置規則

說明

精準匹配及萬用字元

  • 匹配說明

    • 精準匹配:請求的路徑和設定的路徑需完全一致。

    • 萬用字元匹配:請求的路徑和設定的路徑除萬用字元外需完全一致。

  • 輸入條件

    必須以 開頭,只允許包含大小寫英文字母、數字和$-_.+/&~@:這些特殊字元,支援星號(*)和半形問號(?)作為萬用字元使用。

  • 樣本

    請求的路徑:/example/text

    • 精準匹配:輸入/example/text匹配成功。

    • 萬用字元:輸入/example/*匹配成功。

    說明

    ALB的路徑匹配規則與Nginx不同,ALB不支援路徑最長相符原則。

    例如,Nginx的常用配置為location /abc,匹配location的方式為最長首碼匹配,ALB的最長首碼匹配需通過萬用字元實現。您可以在ALB上配置/abc/*(精確匹配及萬用字元)來達到相同的效果。

正則匹配

  • 匹配說明

    請求的路徑和設定的路徑根據Regex匹配。

  • 輸入條件

    只允許包含大小寫英文字母、數字和.-_/=?~^*$:()[]+|這些特殊字元 。

  • 樣本

    請求的路徑:/sys/aaa/HOST

    • 區分大小寫:正則匹配輸入^/sys/(.*)/HOST$時,路徑匹配成功。

    • 不區分大小寫:正則匹配輸入^/sys/(.*)/host$時,路徑匹配成功。

轉寄動作配置介紹

在配置轉寄動作中,支援配置重寫策略和重新導向規則。

重寫策略配置介紹

說明

在轉寄動作中可配置重寫策略。

  • 選擇轉寄至時,支援配置重寫策略。

  • 轉寄條件中的網域名稱配置,請參見網域名稱配置介紹

    如果重新導向的網域名稱為預設的${host},則表示動態替換為原始請求的網域名稱。

路徑配置介紹

轉寄條件的路徑配置Regex後,轉寄動作中的路徑支援Regex替換。關於如何添加轉寄規則,請參見為應用設定路由規則(ALB)

  • 注意事項

    • 轉寄條件中Regex中包含的半形圓括弧()需要與轉寄動作中重寫路徑中$變數的個數保持一致。

    • 轉寄動作中重寫的路徑中需要包含${1}${2}${3}中的一個或多個,且這三個變數不支援使用其他字元代替。

  • 替換原理

    1. 路徑匹配:用戶端發送請求,並匹配到某一條路徑轉寄規則的Regex。

    2. 提取與替換:按照Regex的規範提取,將前三個半形圓括弧()提取出來的內容分別儲存至${1}${2}${3}中,用於在轉寄動作的重寫路徑中替換。

    3. 拼接:按照轉寄動作中重寫路徑的配置,對其中的${1}${2}${3}進行值的替換,最終拼接成重寫的實際路徑。

    編號

    步驟

    樣本

    1

    配置轉寄規則中的轉寄條件和轉寄動作。

    • 轉寄條件路徑:/sys/(.*)/(.*)/aaa

    • 轉寄動作重寫路徑:/${1}/${2}

    2

    用戶端發送請求,並匹配路徑。

    • 用戶端發送的請求路徑:/sys/ccc/bbb/aaa

    • 匹配到的轉寄條件路徑:/sys/(.*)/(.*)/aaa

    3

    提取與替換。

    按照Regex規範,轉寄條件路徑中的兩個(.*)分別提取到cccbbb,並分別保留至轉寄動作中重寫路徑中的${1}${2}

    • ${1}替換為ccc

    • ${2}替換為bbb

    4

    拼接路徑。

    後端伺服器接收到的路徑:/ccc/bbb

說明

如果重新導向的路徑為預設的${port},則表示動態替換為原始的請求路徑。例如轉寄條件中的路徑為/test/aaa,則轉寄動作匹配到的路徑為/test/aaa

查閱配置介紹

查閱的內容指URL中問號後面的部分。如果重新導向的查詢為預設的${query},則表示動態替換為原始請求的查詢參數。

樣本:

用戶端訪問的URL為www.example.com/test/test1?x=1,則查詢的內容為x=1

重新導向策略配置介紹

如果您需要配置重新導向策略,需要配置協議、網域名稱、訪問連接埠、Path、查詢和狀態代碼等參數。

協議介紹

  • 如果前端協議為HTTP,支援將HTTP請求重新導向另一個HTTP或重新導向至HTTPS。

  • 如果前端協議為HTTPS,支援將HTTPS請求重新導向另一個HTTPS。

說明

如果重新導向的協議為預設的$(protocol),則表示動態替換為原始請求的協議。

網域名稱介紹

轉寄動作中的網域名稱配置和轉寄條件中的網域名稱配置方式一樣。具體配置,請參見網域名稱配置介紹

說明

如果重新導向的網域名稱為預設的${host},則表示動態替換為原始請求的網域名稱。

訪問連接埠介紹

配置對應協議的監聽連接埠。例如,當HTTP請求(訪問連接埠:80)重新導向到HTTPS(訪問連接埠:443)。

說明

如果重新導向的訪問連接埠為預設的${port},則表示動態替換為原始請求的連接埠。

Path介紹

轉寄條件的路徑配置Regex後,轉寄動作中的路徑支援Regex替換。關於如何添加轉寄規則,請參見為應用設定路由規則(ALB)

  • 注意事項

    • 轉寄條件中Regex中包含的半形圓括弧()需要與轉寄動作中重新導向路徑中$變數的個數保持一致。

    • 轉寄動作中重新導向的路徑中需要包含${1}${2}${3}中的一個或多個,且這三個變數不支援使用其他字元代替。

  • 替換原理

    1. 路徑匹配:用戶端發送請求,並匹配到某一條路徑轉寄規則的Regex。

    2. 提取與替換:按照Regex的規範提取,將前三個半形圓括弧()提取出來的內容分別儲存至${1}${2}${3}中,用於在轉寄動作的重新導向路徑中替換。

    3. 拼接:按照轉寄動作中重新導向路徑的配置,對其中的${1}${2}${3}進行值的替換,最終拼接成重寫的實際路徑。

    編號

    步驟

    樣本

    1

    配置轉寄規則中的轉寄條件和轉寄動作。

    • 轉寄條件路徑:/sys/(.*)/(.*)/aaa

    • 轉寄動作重新導向路徑:/${1}/${2}

    2

    用戶端發送請求,並匹配路徑。

    • 用戶端發送的請求路徑:/sys/ccc/bbb/aaa

    • 匹配到的轉寄條件路徑:/sys/(.*)/(.*)/aaa

    3

    提取與替換。

    按照Regex規範,轉寄條件路徑中的兩個(.*)分別提取到cccbbb,並分別保留至轉寄動作中重新導向路徑中的${1}${2}

    • ${1}替換為ccc

    • ${2}替換為bbb

    4

    拼接路徑。

    後端伺服器接收到的路徑:/ccc/bbb

說明

如果重新導向的路徑為預設的${port},則表示動態替換為原始的請求路徑。例如轉寄條件中的路徑為/test/aaa,則轉寄動作匹配到的路徑為/test/aaa

查詢介紹

查閱的內容指URL中問號後面的部分。如果重新導向的查詢為預設的${query},則表示動態替換為原始請求的查詢參數。

樣本:

用戶端訪問的URL為www.example.com/test/test1?x=1,則查詢的內容為x=1

狀態代碼介紹

ALB重新導向狀態代碼預設為301,您可以根據業務需求選擇其他重新導向狀態代碼。ALB支援的重新導向狀態代碼及說明如下:

狀態代碼

說明

301

表示永久重新導向。

302

表示臨時重新導向。

303

表示請求的資源可通過另一個URL擷取(查看其他位置)。

307

表示請求的資源臨時移動到另一個位置(臨時重新導向,保留方法)。

308

表示請求的資源已永久移動到新位置(永久重新導向,保留方法)。