全部產品
Search
文件中心

Server Load Balancer:動態轉寄實踐

更新時間:Aug 27, 2026

ALB擴充版的動態轉寄能力可從請求中即時提取目標地址並直接轉寄,無需預先註冊後端,適用於AI Agent Sanbox沙箱調度、海量動態後端入口網關等後端地址動態變化的情境;並通過IP位址區段類型伺服器組約束目標範圍,防止流量轉寄至未授權後端。

適用情境

動態轉寄適用於後端地址隨請求動態變化、後端執行個體數量龐大的情境,典型如下:

  • AI Agent沙箱流量調度:AI Agent推理、代碼執行等情境運行在大量按需拉起的沙箱執行個體(如各種Sandbox產品的Pod)上,上層調度器將目標沙箱執行個體的IP和連接埠寫入要求標頭,ALB提取後直接轉寄,無需預先註冊頻繁變化的沙箱後端。

  • 小程式與H5遊戲單網域名稱轉寄:小程式等平台通常僅允許配置一個合法網域名稱,可在單一網域名稱下通過URL參數(如?ip=1.1.X.X&port=1111)將請求路由到不同的遊戲伺服器執行個體,替代自建Nginx方案。

  • 海量動態後端:當後端執行個體數量龐大時,動態轉寄按請求即時定址,無需逐一註冊後端,僅需配置允許轉寄的IP位址區段和連接埠範圍,單個執行個體即可承載海量動態後端,避免因伺服器組配額限制而拆分為多個執行個體。

方案架構

用戶端請求到達擴充版ALB執行個體後,轉寄規則將流量交給IP位址區段類型伺服器組所關聯的動態轉寄組件。組件依次經過端點提取、目標範圍校正、動態轉寄三個階段,確定真實的目標IP和連接埠,命中允許的目標範圍則直接轉寄到該地址,未命中則返回403。

  • 擴充版ALB執行個體:提供負載平衡和流量轉寄能力。

  • IP位址區段類型伺服器組:以IP位址區段和連接埠範圍聲明動態轉寄允許命中的目標範圍,必須關聯包含動態轉寄組件的服務擴充。

  • 服務擴充:承載動態轉寄組件,綁定到IP位址區段類型伺服器組生效。

  • 動態轉寄組件:從請求的查詢參數或要求標頭中提取目標主機和連接埠,完成目標範圍校正後將請求轉寄給後端。

適用範圍

  • 使用者已擷取ALB擴充版公測資格

  • 使用者已在華東2(上海)地區建立一個專用網路VPC1,分別在可用性區域B和可用性區域F建立交換器VSW1VSW2

操作步驟

1. 建立擴充版 ALB 執行個體

  1. 登入ALB控制台,選擇華東2(上海)地區,單擊建立應用型負載平衡

  2. 在購買頁完成以下配置,單擊立即建立

    • 地區:選擇華東2(上海)

    • 執行個體網路類型:選擇公網

    • VPC可用性區域:選擇VPC1,勾選上海 可用性區域B上海 可用性區域F後選擇VSW1VSW2,並自動分配公網IP

    • 協議版本:選擇IPv4

    • 功能版本(執行個體費):選擇擴充版

  3. 確認訂單頁面確認執行個體配置詳情,單擊立即開通

2. 建立服務擴充並添加動態轉寄組件

  1. 服務擴充控制台,單擊建立服務擴充。在服務擴充配置地區,輸入服務副檔名稱ext-dyn-fwd-plugin

  2. 擴充類型預設選擇外掛程式組件名稱下拉選擇動態轉寄。在快捷配置(點擊自動填滿當前規則參數)下方單擊常用Header使用系統預置模板,然後單擊建立

    • 提取來源:預設值Header,即從HTTP要求標頭中提取目標IP和連接埠。

    • 提模數式:預設值分離模式,目標IP和連接埠位於兩個不同欄位,需分別指定。

    • 目標Host來源:預設值X-Target-Host,動態轉寄組件從該要求標頭讀取目標IP。

    • 目標Port來源:預設值X-Target-Port,動態轉寄組件從該要求標頭讀取目標連接埠。

    • 預設連接埠:預設值80,未從請求中提取到連接埠時的兜底連接埠。

動態轉寄組件不支援與其他組件添加到同一個服務擴充。

3. 準備後端服務

  1. 參考以下配置,建立一台ECS。ECS所在安全性群組需放通VPC1的網段IP。

    • 地區:選擇華東2(上海)

    • 網路及可用區:選擇VPC1VSW1,並勾選指定主網卡主私網IP地址。本文中VSW1對應IP位址區段172.16.10.0/24,指定主網卡主私網IP地址為172.16.10.100

    • 鏡像:選擇Alibaba Cloud Linux 3.2104 LTS 64位

  2. 在找到該執行個體,依次單擊操作列的選擇 > 網絡和安全性群組 > 管理輔助私網 IP。單擊增加,填入172.16.10.101後單擊確定。參考作業系統識別輔助私網IP地址配置使ECS識別該IP。串連ECS並輸入ip a,可看到ECS已識別輔助私網地址。

      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000                                                                                     
          link/ether 00:16:3e:xx:xx:xx brd ff:ff:ff:ff:ff:ff                                                                                                                                  
          altname enp3s0                                                                                                                                                                      
          inet 172.16.10.100/24 brd 172.16.10.255 scope global noprefixroute eth0                                                                                                              
             valid_lft forever preferred_lft forever                                                                                                                                          
          inet 172.16.10.101/24 brd 172.16.10.255 scope global secondary noprefixroute eth0                                                                                                  
             valid_lft forever preferred_lft forever                                                                                                                                          
          inet6 fe80::xxxx:xxff:fexx:xxxx/64 scope link                                                                                                                                     
             valid_lft forever preferred_lft forever   
  3. 在後端ECS上安裝nginx並部署echo回顯服務,監聽80和81連接埠,對任意請求返回其實際到達的目標IP:Port,用於驗證動態轉寄的落點。

    # 1. 安裝 nginx
    sudo dnf install -y nginx
    
    # 2. 寫入 echo 回顯配置
    sudo tee /etc/nginx/conf.d/echo.conf >/dev/null <<'EOF'
    server {
        listen 80 default_server;
        listen 81 default_server;
        server_name _;
        location / {
            default_type text/plain;
            return 200 "served: $server_addr:$server_port\n";
        }
    }
    EOF
    
    # 3. 去掉內建預設網站的 default_server 標記,避免衝突
    sudo sed -i 's/ default_server//g' /etc/nginx/nginx.conf
    
    # 4. 校正配置、設定開機自啟並啟動
    sudo nginx -t
    sudo systemctl enable nginx
    sudo systemctl restart nginx
    
    # 5. 本機自測
    curl 172.16.10.100:80
    curl 172.16.10.100:81
    curl 172.16.10.101:80
    curl 172.16.10.101:81

4. 建立 IP 位址段類型伺服器組

動態轉寄根據請求內容決定轉寄目標,若不加約束可能被構造請求誘導轉寄到非預期地址,形成SSRF風險。配置IP位址區段伺服器組作為強制安全邊界:僅當目標IP與連接埠命中允許存取條目才轉寄,未命中一律返回403。

  1. 伺服器組控制台,單擊建立伺服器組

  2. 完成以下配置,單擊建立

    • 伺服器群組類型:選擇IP位址區段。

    • 伺服器組名稱:輸入自訂名稱如sgp-dyn-fwd

    • 後端協議:預設選擇HTTP

    • 使用已有服務擴充並勾選步驟1中建立的服務擴充ext-dyn-fwd-plugin

  3. 伺服器組建立成功,單擊添加後端伺服器。在添加IP位址區段視窗,輸入IP位址區段172.16.10.0/24連接埠範圍80-81,單擊確定

5. 建立監聽

  1. ALB控制台,單擊目標執行個體ID進入執行個體詳情頁。在監聽頁簽單擊建立監聽

  2. 配置監聽步驟,選擇監聽協議HTTPS監聽通信埠填寫443,完成後單擊下一步

  3. 配置SSL認證步驟,選擇與自訂網域名匹配的伺服器憑證,單擊下一步

  4. 選擇伺服器組步驟,依次選擇IP位址區段類型和伺服器組sgp-dyn-fwd,完成後單擊下一步

    此處使用預設轉寄規則將流量轉寄至IP位址區段伺服器組。如需疊加身份鑒權、限速等能力,可在監聽下另建轉寄規則並關聯對應服務擴充。
  5. 組態稽核步驟,確認配置並單擊提交

6. 設定網域名稱解析

將自有網域名稱通過CNAME解析指向ALB執行個體的DNS名稱,用戶端通過自有網域名稱訪問ALB。

本文以阿里雲Alibaba Cloud DNS為例,對於非阿里雲註冊網域名稱,需先將網域名稱添加到雲解析控制台

  1. ALB控制台,複製目標執行個體的DNS 名稱

  2. 登入網域名稱解析控制台,在目標網域名稱的操作列單擊解析设置。在解析设置頁面單擊添加记录

  3. 參考以下資訊添加CNAME記錄,完成後單擊确定

    • 记录类型:選擇CNAME

    • 主机记录:輸入欄位名首碼如test。假設使用者自有根網域名稱為example.com,則訪問ALB的網域名稱為test.example.com

    • 解析请求来源TTL时间:保持預設。

    • 记录值:輸入ALB執行個體的DNS名稱。

  4. 在彈出的解析变更确认對話方塊確認解析資訊,單擊確定

7. 驗證測試

請求需滿足以下條件才能被正常響應:

  • 動態轉寄組件能夠從請求中提取出目標IP和連接埠(未顯式攜帶連接埠時以預設連接埠兜底)。

  • 該IP和連接埠的組合落在IP位址區段伺服器組的允許存取範圍內。

  • 後端服務在上述IP和連接埠監聽並返迴響應。

請求攜帶合法目標地址

轉寄到主IP地址
curl -v \
  -H "X-Target-Host: 172.16.10.100" \
  -H "X-Target-Port: 80" \
  https://test.example.com/echo

預期響應HTTP 200,回顯served: 172.16.10.100:80

轉寄到輔助IP(驗證不同IP)
curl -v \
  -H "X-Target-Host: 172.16.10.101" \
  -H "X-Target-Port: 80" \
  https://test.example.com/echo

預期響應HTTP 200,回顯served: 172.16.10.101:80。證明目標IP隨請求動態變化。

轉寄到不同連接埠(驗證不同連接埠)
curl -v \
  -H "X-Target-Host: 172.16.10.100" \
  -H "X-Target-Port: 81" \
  https://test.example.com/echo

預期響應HTTP 200,回顯served: 172.16.10.100:81。證明目標連接埠同樣隨請求動態變化。

不攜帶連接埠(驗證預設連接埠兜底)
curl -v \
  -H "X-Target-Host: 172.16.10.101" \
  https://test.example.com/echo

預期響應HTTP 200,回顯served: 172.16.10.101:80。請求未攜帶連接埠,動態轉寄組件以預設連接埠80兜底。

請求未攜帶目標地址

curl -v \
  https://test.example.com/echo

預期響應HTTP 403,回顯endpoint not provided。動態轉寄組件無法從請求中提取目標IP地址。

目標地址或連接埠未在允許範圍內

curl -v \
  -H "X-Target-Host: 10.99.99.99" \
  -H "X-Target-Port: 80" \
  https://test.example.com/echo
curl -v \
  -H "X-Target-Host: 172.16.10.100" \
  -H "X-Target-Port: 12345" \
  https://test.example.com/echo

預期響應HTTP 403,回顯endpoint not allowed。提取到的IP地址或連接埠因未落在伺服器組允許範圍內被拒絕。

更多資訊

計費說明

  • ALB擴充版:目前處於公測階段,使用者可免費體驗。擴充版ALB執行個體綁定的 EIP 有獨立的計費規則,費用由EIP收取。

  • ECS執行個體:詳見ECS計費概述。若出於測試目的建立ECS,建議建立低規格的隨用隨付執行個體並及時釋放。

  • 網域名稱和公網DNS解析費用:除了需要支付網域名稱供應商的網域名稱費用外,在阿里雲配置公網DNS解析需要支付公網權威解析費用

  • 認證費用:從阿里雲購買認證或將認證上傳至阿里雲,需要支付伺服器憑證費用

使用限制

  • 動態轉寄後端協議當前僅支援HTTP。

  • IP位址區段類型伺服器組不支援添加22.0.0.0/833.0.0.0/8100.0.0.0/8127.0.0.0/8等位址區段。

  • 單個IP位址區段類型伺服器組預設支援最多200條IP段條目(每條為一個IP段與連接埠範圍的組合)。

ALB擴充版支援的地區

地區

地區

可用性區域

中國

華北6(烏蘭察布)

可用性區域A、可用性區域B、可用性區域C

華東1(杭州)

可用性區域J、可用性區域K

華北2(北京)

可用性區域I、可用性區域K、可用性區域L

華東2(上海)

可用性區域B、可用性區域F

中國香港

可用性區域B、可用性區域C、可用性區域D

亞太地區

新加坡

可用性區域A、可用性區域B、可用性區域C

日本(東京)

可用性區域B、可用性區域C、可用性區域E

馬來西亞(吉隆坡)

可用性區域A、可用性區域B、可用性區域C

歐美地區

德國(法蘭克福)

可用性區域A、可用性區域B

美國(矽谷)

可用性區域A、可用性區域B

中東

阿聯酋(杜拜)

可用性區域A、可用性區域B

使用建議

  • 合理排序多條目標地址提取配置:配置多條目標地址提取配置時,系統按配置序號從小到大依次匹配,首條命中即生效。建議將命中率最高、最嚴格的配置排在前面。

  • 收斂允許的目標範圍:在保障業務可用的前提下,盡量收斂IP位址區段與連接埠範圍,僅允許存取業務實際需要的後端,避免配置過寬的範圍。

  • 配合轉寄規則靈活使用:IP位址區段類型伺服器組可作為轉寄規則的轉寄目標,與轉寄條件、服務擴充、轉寄動作靈活組合,滿足複雜流量編排需求。

常見問題

請求全部403,響應endpoint not allowed

確認IP位址區段伺服器組已正確配置IP和連接埠範圍,且請求攜帶的目標IP和連接埠落在該範圍中。

請求全部403,響應體endpoint not provided

檢查請求是否包含X-Target-HostX-Target-Port等欄位,可查看ALB訪問日誌確認。