本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
應用程式負載平衡器的接聽程式
開始使用應用程式負載平衡器之前,您必須新增一或多個應用程式負載聽眾。監聽器會使用您設定的通訊協定和連接埠來檢查連線要求。您為接聽程式定義的規則,將決定負載平衡器路由請求到已登錄的目標的方法。
目錄
如果您需要為網路負載平衡器建立 TCP 或 UDP 接聽程式,請參閱網路負載平衡器的接聽程式在網路負載平衡器使用者指南。
接聽程式組態
接聽程式支援下列通訊協定與連接埠:
-
Protocols (通訊協定):HTTP、HTTPS
-
Ports (連接埠):1-65535
您可以使用 HTTPS 接聽程式來將加密和解密的工作卸載到您的負載平衡器,使得您的應用程式可以專注在商業邏輯上。如果接聽程式通訊協定是 HTTPS,則必須在接聽程式上至少部署一個 SSL 伺服器憑證。如需詳細資訊,請參閱為您的應用程式負載平衡器建立 HTTPS 接聽程式。
如果您必須確保目標解密 HTTPS 流量而非負載平衡器,則可以在連接埠 443 上建立具有 TCP 接聽程式的網路負載平衡器。使用 TCP 接聽程式時,負載平衡器會將加密的流量傳送到目標,而不需要解密。如需詳細資訊,請參閱《Network Load Balancer 使用者指南》。
應用程式負載平衡器提供原生支援 WebSockets。您可以將現有的 HTTP/1.1 連線升級為 WebSocket (ws
或者wss
) 透過使用 HTTP 連線升級進行連線。升級時,用於要求 (與負載平衡器以及目標) 的 TCP 連線會變成持續性 WebSocket 透過負載平衡器在用戶端與目標之間的連線。您可以使用 WebSockets 同時使用 HTTP 和 HTTPS 接聽程式。您為監聽器選擇的選項適用於 WebSocket 連接以及 HTTP 流量。如需詳細資訊,請參閱如何 WebSocket 協議工作在亞馬遜 CloudFront 開發者指南。
應用程式負載平衡器透過 HTTPS 接聽程式提供 HTTP/2 的原生支援。您可以使用 HTTP/2 連線平行傳送高達 128 個請求。您可以使用通訊協定版本,使用 HTTP/2 將要求傳送至目標。如需詳細資訊,請參閱協議版本。由於 HTTP/2 可更有效率地使用前端連線,您可能會注意到用戶端和負載平衡器之間的連線數較少。您無法使用 HTTP/2 的伺服器推送功能。
如需詳細資訊,請參閱請求路由在彈性負載平衡使用者指南。
接聽程式規則
每個偵聽器都有一個默認操作,也稱為 defatul 規則。無法刪除預設規則,且永遠會在最後執行。您可以建立其他規則,並由優先順序、一或多個動作以及一或多個條件組成。您可以隨時新增或編輯規則。如需詳細資訊,請參閱編輯規則。
預設規則
建立接聽程式時,您會定義預設規則的預設動作。預設規則不能有條件。如果沒有符合任何接聽程式規則的條件,則會執行預設規則的動作。
以下顯示主控台中預設規則的範例:

規則優先順序
每個規則具有優先順序。依優先順序評估規則,從最低值到最高值。預設規則最後評估。您可以隨時變更非預設規則的優先順序。您無法變更預設規則的優先順序。如需詳細資訊,請參閱更新規則優先權。
規則動作
每個規則動作都有類型、優先順序以及執行動作所需的資訊。如需詳細資訊,請參閱規則動作類型。
規則條件
每個規則條件具有類型和組態資訊。滿足規則的條件時,即會執行它的動作。如需詳細資訊,請參閱規則條件類型。
規則動作類型
以下是監聽器規則支援的動作類型:
authenticate-cognito
-
[HTTPS 接聽程式] 使用亞馬遜認可來驗證使用者。如需詳細資訊,請參閱使用應用程式負載平衡器驗證用戶。
authenticate-oidc
-
[HTTPS 接聽程式] 使用與 OpenID Connect (OIDC) 相容的身分提供者來驗證使用者。
fixed-response
-
傳回自訂的 HTTP 回應。如需詳細資訊,請參閱固定回應動作。
forward
-
將請求轉送到指定的目標群組。如需詳細資訊,請參閱轉寄動作。
redirect
-
將請求從一個 URL 重新導向到另一個 URL。如需詳細資訊,請參閱重新導向動作。
優先順序最低的動作會先執行。每個規則必須包含剛好以下其中一個動作:forward
、redirect
或 fixed-response
,而且必須是最後要執行的動作。
如果通訊協定版本為 GRPC 或 HTTP/2,則唯一支援的動作為forward
動作。
固定回應動作
您可以使用 fixed-response
動作來捨棄用戶端請求,並傳回自訂 HTTP 回應。您可以使用此動作來傳回 2XX、4XX 或 5XX 回應代碼和選用的訊息。
採取 fixed-response
動作時,會在存取日誌中記錄重新導向目標的動作和 URL。如需詳細資訊,請參閱存取日誌項目。會在 HTTP_Fixed_Response_Count
指標中報告成功的 fixed-response
動作計數。如需詳細資訊,請參閱Application Load Balancer 指標。
範例固定回應動作AWS CLI
您可以在建立或修改規則時指定動作。如需詳細資訊,請參閱 create-rule 和 modify-rule 命令。下列動作傳送包含指定的狀態碼和訊息本文的固定回應。
[ { "Type": "fixed-response", "FixedResponseConfig": { "StatusCode": "200", "ContentType": "text/plain", "MessageBody": "Hello world" } } ]
轉寄動作
您可以使用 forward
動作將請求路由傳送到一或多個目標群組。如果您為一個 forward
動作指定多個目標群組,則必須為每個目標群組指定加權。每個目標群組權重為介於 0 到 999 之間的值。符合加權目標群組之監聽程式規則的請求,會根據其權重分配到這些目標群組。例如,如果您指定兩個目標群組,每個目標群組的權重為 10,則每個目標群組都會收到一半的請求。如果您指定兩個目標群組,一個權重為 10,另一個權重為 20,則權重為 20 的目標群組接收的請求數量是另一個目標群組的兩倍。
根據預設,在加權的目標群組之間分配流量設定規則,並不保證可以接受黏性工作階段。若要確保接受黏性工作階段,請啟用目標群組的黏性規則。當負載平衡器第一次將要求路由至加權目標群組時,會產生名為的 Cookie AWSALBTG 編碼有關所選目標群組的資訊、加密 Cookie,並在對用戶端的回應中包含 Cookie。用戶端應該包含負載平衡器後續請求中接收的 cookie。當負載平衡器收到符合已啟用目標群組粘性的規則的請求並包含 cookie 時,會將請求路由至 cookie 中指定的目標群組。
應用程式負載平衡器不支援經過 URL 編碼的 Cookie 值。
透過 CORS (跨來源資源共享) 請求,有些瀏覽器需要 SameSite=None; Secure
來啟用綁定。在這種情況下,彈性負載平衡會生成第二個 cookie, AWSALBTGCORS,其中包含與原始粘性餅乾相同的信息以及此SameSite
屬性。用戶端會同時收到這兩個 Cookie。
範例 一個目標群組的轉寄動作範例
您可以在建立或修改規則時指定動作。如需詳細資訊,請參閱 create-rule 和 modify-rule 命令。下列動作將請求轉送到指定的目標群組。
[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:
us-west-2
:123456789012
:targetgroup/my-targets
/73e2d6bc24d8a067
" } ] } } ]
範例 具有兩個加權目標群組的轉寄動作範例
下列動作會根據每個目標群組的權重,將要求轉送至兩個指定的目標群組。
[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:
us-west-2
:123456789012
:targetgroup/blue-targets
/73e2d6bc24d8a067
", "Weight": 10 }, { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2
:123456789012
:targetgroup/green-targets
/09966783158cda59
", "Weight": 20 } ] } } ]
範例 啟用粘性的前進動作示例
如果您對多個目標群組執行轉寄動作,且有一或多個目標群組具有粘滯會話啟用時,您必須啟用目標群組黏著性。
下列動作會將請求轉送至兩個指定的目標群組,搭配啟用目標群組黏性。不包含該綁定 Cookie 的請求會根據每個目標群組的權重進行路由。
[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:
us-west-2
:123456789012
:targetgroup/blue-targets
/73e2d6bc24d8a067
", "Weight": 10 }, { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2
:123456789012
:targetgroup/green-targets
/09966783158cda59
", "Weight": 20 } ], "TargetGroupStickinessConfig": { "Enabled": true, "DurationSeconds": 1000 } } } ]
重新導向動作
您可以使用 redirect
動作將用戶端請求從一個 URL 重新導向到另一個。您可以根據您的需求,將重新導向設定為暫時 (HTTP 302) 或永久 (HTTP 301)。
URI 包含以下元件:
protocol
://hostname
:port
/path
?query
您必須修改以下至少一個元件,以避免重新導向迴圈:protocol、hostname、port 或 path。未修改的任何元件會維持其原始值。
- protocol
-
通訊協定 (HTTP 或 HTTPS)。您可以重新導向 HTTP 到 HTTP、HTTP 到 HTTPS,以及 HTTPS 到 HTTPS。您不能重新導向 HTTPS 到 HTTP。
- hostname
-
主機名稱。主機名稱不區分大小寫、長度最多 128 個字元,由英數字元、萬用字元 (* 和 ?) 和連字號 (-) 組成。
- port
-
連接埠 (1 到 65535)。
- 路徑
-
絕對路徑,開頭為前置字元 "/"。路徑區分大小寫、長度最多 128 個字元,由英數字元、萬用字元 (* 和 ?)、& (使用 &) 和下列特殊字元組成:_-.$/~"'@:+。
- query
-
查詢參數。長度上限為 128 個字元。
您可以使用以下預留關鍵字,來在目標 URL 中重複使用原始 URL 的 URI 元件:
-
#{protocol}
- 保留通訊協定。用於通訊協定和查詢元件。 -
#{host}
- 保留網域。用於主機名稱、路徑和查詢元件。 -
#{port}
- 保留連接埠。用於連接埠、路徑和查詢元件。 -
#{path}
- 保留路徑。用於路徑和查詢元件。 -
#{query}
- 保留查詢參數。用於查詢元件。
採取 redirect
動作時,會將動作記錄於存取日誌中。如需詳細資訊,請參閱存取日誌項目。會在 HTTP_Redirect_Count
指標中報告成功的 redirect
動作計數。如需詳細資訊,請參閱Application Load Balancer 指標。
範例 使用主控台重新導向動作範例
以下規則會設定使用 HTTPS 通訊協定和指定連接埠 (40443) 永久重新導向到 URL,但會保留原始主機名稱、路徑和查詢參數。這個畫面等同於 "https://#{host}:40443/#{path}?#{query}"。

以下規則會設定永久重新導向到 URL,保留通訊協定、連接埠、主機名稱和查詢參數,並使用 #{path}
關鍵字來建立修改的路徑。這個畫面等同於 "#{protocol}://#{host}:#{port}/new/#{path}?#{query}"。

範例重新導向動作AWS CLI
您可以在建立或修改規則時指定動作。如需詳細資訊,請參閱 create-rule 和 modify-rule 命令。下列動作將 HTTP 請求重新導向到連接埠 443 的 HTTPS 請求,而且使用與 HTTP 請求相同的主機名稱、路徑和查詢字串。
[ { "Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "Host": "#{host}", "Path": "/#{path}", "Query": "#{query}", "StatusCode": "HTTP_301" } } ]
規則條件類型
以下是規則支援的條件類型:
host-header
-
根據每個請求的主機名稱來路由傳送。如需詳細資訊,請參閱主機條件。
http-header
-
根據每個請求的 HTTP 標頭來路由傳送。如需詳細資訊,請參閱標頭條件。
http-request-method
-
根據每個請求的 HTTP 請求方法來路由傳送。如需詳細資訊,請參閱HTTP 請求方法條件。
path-pattern
-
根據請求 URL 中的路徑模式來路由傳送。如需詳細資訊,請參閱路徑條件。
query-string
-
根據查詢字串中的鍵值組或值來路由傳送。如需詳細資訊,請參閱查詢字串條件。
source-ip
-
根據每個請求的來源 IP 位址來路由傳送。如需詳細資訊,請參閱來源 IP 位址條件。
每個規則可以選擇性地包含下列每個條件中的一個:host-header
、http-request-method
、path-pattern
和 source-ip
。每個規則也可以選擇性地包含下列每個條件中的一或多個:http-header
和 query-string
。
每個條件最多可以指定三個比對評估。例如,對於每個 http-header
條件,您最多可以指定三個字串,以便與請求中的 HTTP 標頭值做比較。如果其中一個字串符合 HTTP 標頭的值,即符合條件。若要求所有字串都要符合,請為每個比對評估建立一個條件。
每個規則最多可以指定五個比對評估。例如,您可以建立含有五個條件的規則,其中每個條件有一個比對評估。
您可以在 http-header
、host-header
、path-pattern
和 query-string
條件的比對評估中包含萬用字元。每個規則以五個萬用字元為限。
規則僅會套用至可見的 ASCII 字元;會排除控制字元 (0x00 到 0x1f 和 0x7f)。
如需示範,請參閱進階要求路由
標頭條件
您可以使用 HTTP 標頭條件來設定規則,以根據請求的 HTTP 標頭來路由傳送請求。您可以指定標準或自訂 HTTP 標頭欄位的名稱。標頭名稱和比對評估不區分大小寫。比較字串中支援下列萬用字元:* (符合 0 個或多個字元) 和 ? (確切符合 1 個字元)。標頭名稱中不支援萬用字元。
範例 使用的範例 HTTP 標頭條件AWS CLI
您可以在建立或修改規則時指定條件。如需詳細資訊,請參閱 create-rule 和 modify-rule 命令。當請求的 User-Agent 標頭符合其中一個指定的字串時,即滿足下列條件。
[ { "Field": "http-header", "HttpHeaderConfig": { "HttpHeaderName": "User-Agent", "Values": ["*Chrome*", "*Safari*"] } } ]
HTTP 請求方法條件
您可以使用 HTTP 請求方法條件來設定規則,以根據請求的 HTTP 請求方法來路由傳送請求。您可以指定標準或自訂 HTTP 方法。比對評估區分大小寫。不支援萬用字元;因此,方法名稱必須完全相符。
建議您以相同方式來路由傳送 GET 和 HEAD 請求,因為可快取對 HEAD 請求的回應。
範例 HTTP 方法條件AWS CLI
您可以在建立或修改規則時指定條件。如需詳細資訊,請參閱 create-rule 和 modify-rule 命令。使用指定方法的請求符合下列條件。
[ { "Field": "http-request-method", "HttpRequestMethodConfig": { "Values": ["CUSTOM-METHOD"] } } ]
主機條件
您可以使用主機條件來定義規則,以根據主機標頭中的主機名稱來路由傳送請求 (也稱為以主機為基礎的路由)。這可讓您使用單一負載平衡器支援多個子網域和不同的頂層網域。
主機名稱不區分大小寫,長度最多可達 128 個字元,而且可以包含下列任何字元:
-
A — Z, 一 — Z, 0 至 9
-
- .
-
* (符合 0 個或多個字元)
-
? (確切符合 1 個字元)
您必須至少包含一個 "." 字元。您只可以在最後的 "." 字元之後包含字母字元。
主機名稱範例
-
example.com
-
test.example.com
-
*.example.com
規則 *.example.com
會符合 test.example.com
但不會符合 example.com
。
範例主機標頭條件AWS CLI
您可以在建立或修改規則時指定條件。如需詳細資訊,請參閱 create-rule 和 modify-rule 命令。當請求的主機標頭符合指定的字串時,即滿足下列條件。
[ { "Field": "host-header", "HostHeaderConfig": { "Values": ["*.example.com"] } } ]
路徑條件
您可以使用路徑條件來定義規則,以根據請求中的 URL 來路由傳送請求 (也稱為以路徑為基礎的路由)。
系統只會將路徑模式套用到 URL 的路徑,而不會套用到其查詢參數。它僅適用於可見的 ASCII 字符;會排除控制字符 (0x00 到 0x1f 和 0x7f)。
名稱模式區分大小寫,長度最多可達 128 個字元,而且可以包含下列任何字元。
-
A — Z, 一 — Z, 0 至 9
-
_ - . $ / ~ " ' @ : +
-
& (使用 &)
-
* (符合 0 個或多個字元)
-
? (確切符合 1 個字元)
如果通訊協定版本為 GRPC,則條件可以是套件、服務或方法的特定條件。
HTTP 路徑模式範例
-
/img/*
-
/img/*/pics
GrPC 路徑模式範例
-
/包
-
/包裝. 服務
-
/包裝/服務/方法
路徑模式是用於路由請求,但不會修改請求。例如,如果規則的路徑模式為/img/*
,規則會轉寄要求/img/picture.jpg
至指定的目標群組作為要求/img/picture.jpg
。
範例路徑樣式條件AWS CLI
您可以在建立或修改規則時指定條件。如需詳細資訊,請參閱 create-rule 和 modify-rule 命令。當請求的 URL 包含指定的字串時,即滿足下列條件。
[ { "Field": "path-pattern", "PathPatternConfig": { "Values": ["/img/*"] } } ]
查詢字串條件
您可以使用查詢字串條件來設定規則,以根據查詢字串中的鍵值組或值來路由傳送請求。比對評估不區分大小寫。支援下列萬用字元:* (符合 0 個或多個字元) 和 ? (確切符合 1 個字元)。
範例 查詢字串條件範例AWS CLI
您可以在建立或修改規則時指定條件。如需詳細資訊,請參閱 create-rule 和 modify-rule 命令。當請求的查詢字串包含鍵值組 "version=v1" 或任何設為 "example" 的索引鍵時,即滿足下列條件。
[ { "Field": "query-string", "QueryStringConfig": { "Values": [ { "Key": "version", "Value": "v1" }, { "Value": "*example*" } ] } } ]
來源 IP 位址條件
您可以使用來源 IP 地址條件來設定規則,以根據請求的來源 IP 地址來路由傳送請求。必須以 CIDR 格式指定 IP 地址。IPv4 和 IPv6 地址都可用。不支援萬用字元。您無法指定255.255.255.255/32
來源 IP 規則條件的 CIDR。
如果用戶端位在 proxy 後方,則此為 proxy 的 IP 地址,而不是用戶端的 IP 地址。
X-Forwarded-For 標頭中的地址不滿足此條件。若要搜尋 X-Forwarded-For 標頭中的地址,請使用 http-header
條件。
範例來源 IP 條件AWS CLI
您可以在建立或修改規則時指定條件。如需詳細資訊,請參閱 create-rule 和 modify-rule 命令。當請求的來源 IP 地址出現在其中一個指定的 CIDR 區塊時,即滿足下列條件。
[ { "Field": "source-ip", "SourceIpConfig": { "Values": ["192.0.2.0/24", "198.51.100.10/32"] } } ]