接聽程式規則的條件類型 - Elastic Load Balancing

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

接聽程式規則的條件類型

條件定義傳入請求必須符合的條件,接聽程式規則才能生效。如果請求符合規則的條件,則會依照規則的動作指定來處理請求。每個規則條件具有類型和組態資訊。Application Load Balancer 支援接聽程式規則的下列條件類型。

條件類型
host-header

根據每個請求的主機名稱來路由傳送。如需詳細資訊,請參閱主機條件

http-header

根據每個請求的 HTTP 標頭來路由傳送。如需詳細資訊,請參閱HTTP 標頭條件

http-request-method

根據每個請求的 HTTP 請求方法來路由傳送。如需詳細資訊,請參閱HTTP 請求方法條件

path-pattern

根據請求 URL 中的路徑模式來路由傳送。如需詳細資訊,請參閱路徑條件

query-string

根據查詢字串中的鍵值組或值來路由傳送。如需詳細資訊,請參閱查詢字串條件

source-ip

根據每個請求的來源 IP 位址來路由傳送。如需詳細資訊,請參閱來源 IP 地址條件

條件基本概念
  • 每個規則可以選擇性地包含下列每個條件中的一個:host-headerhttp-request-methodpath-patternsource-ip。每個規則也可以選擇性地包含下列每個條件中的一或多個:http-headerquery-string

  • 每個條件最多可以指定三個比對評估。例如,對於每個 http-header 條件,您最多可以指定三個字串,以便與請求中的 HTTP 標頭值做比較。如果其中一個字串符合 HTTP 標頭的值,即符合條件。若要求所有字串都要符合,請為每個比對評估建立一個條件。

  • 每個規則最多可以指定五個比對評估。例如,您可以建立含有五個條件的規則,其中每個條件有一個比對評估。

  • 您可以在 http-headerhost-headerpath-patternquery-string 條件的比對評估中包含萬用字元。每個規則以五個萬用字元為限。

  • 規則僅會套用至可見的 ASCII 字元;會排除控制字元 (0x00 到 0x1f 和 0x7f)。

示範

如需示範,請參閱 Advanced Request Routing

HTTP 標頭條件

您可以使用 HTTP 標頭條件來設定規則,以根據請求的 HTTP 標頭來路由傳送請求。您可以指定標準或自訂 HTTP 標頭欄位的名稱。標頭名稱和比對評估不區分大小寫。比較字串中支援下列萬用字元:* (符合 0 個或多個字元) 和 ? (確切符合 1 個字元)。標頭名稱中不支援萬用字元。

routing.http.drop_invalid_header_fields 啟用 Application Load Balancer 屬性時,它會捨棄不符合規則表達式 () 的標頭名稱A-Z,a-z,0-9。也可以新增不符合規則表達式的標頭名稱。

範例 的範例 HTTP 標頭條件 AWS CLI

您可以在建立或修改規則時指定條件。如需詳細資訊,請參閱 create-rulemodify-rule 命令。當請求的 User-Agent 標頭符合其中一個指定的字串時,即滿足下列條件。

[ { "Field": "http-header", "HttpHeaderConfig": { "HttpHeaderName": "User-Agent", "Values": ["*Chrome*", "*Safari*"] } } ]

HTTP 請求方法條件

您可以使用 HTTP 請求方法條件來設定規則,以根據請求的 HTTP 請求方法來路由傳送請求。您可以指定標準或自訂 HTTP 方法。比對評估區分大小寫。不支援萬用字元;因此,方法名稱必須完全相符。

建議您以相同方式來路由傳送 GET 和 HEAD 請求,因為可快取對 HEAD 請求的回應。

範例 的範例 HTTP 方法條件 AWS CLI

您可以在建立或修改規則時指定條件。如需詳細資訊,請參閱 create-rulemodify-rule 命令。使用指定方法的請求符合下列條件。

[ { "Field": "http-request-method", "HttpRequestMethodConfig": { "Values": ["CUSTOM-METHOD"] } } ]

主機條件

您可以使用主機條件來定義規則,以根據主機標頭中的主機名稱來路由傳送請求 (也稱為以主機為基礎的路由)。這可讓您使用單一負載平衡器來支援多個子網域和不同的頂層網域。

主機名稱不區分大小寫,長度最多可達 128 個字元,而且可以包含下列任何字元:

  • A-Z、a-z、0-9

  • - .

  • * (符合 0 個或多個字元)

  • ? (確切符合 1 個字元)

您必須至少包含一個 "." 字元。您只可以在最後的 "." 字元之後包含字母字元。

主機名稱範例
  • example.com

  • test.example.com

  • *.example.com

規則 *.example.com 會符合 test.example.com 但不會符合 example.com。

範例 的範例主機標頭條件 AWS CLI

您可以在建立或修改規則時指定條件。如需詳細資訊,請參閱 create-rulemodify-rule 命令。當請求的主機標頭符合指定的字串時,即滿足下列條件。

[ { "Field": "host-header", "HostHeaderConfig": { "Values": ["*.example.com"] } } ]

路徑條件

您可以使用路徑條件來定義規則,以根據請求中的 URL 來路由傳送請求 (也稱為以路徑為基礎的路由)。

系統只會將路徑模式套用到 URL 的路徑,而不會套用到其查詢參數。它僅適用於可見的 ASCII 字符;會排除控制字符 (0x00 到 0x1f 和 0x7f)。

只有在 URI 標準化發生後,才會執行規則評估。

名稱模式區分大小寫,長度最多可達 128 個字元,而且可以包含下列任何字元。

  • A-Z、a-z、0-9

  • _ - . $ / ~ " ' @ : +

  • & (使用 &)

  • * (符合 0 個或多個字元)

  • ? (確切符合 1 個字元)

如果通訊協定版本為 gRPC,則條件可以具體到套件、服務或方法。

HTTP 路徑模式範例
  • /img/*

  • /img/*/pics

gRPC 路徑模式範例
  • /package

  • /package.service

  • /package.service/method

路徑模式是用於路由請求,但不會修改請求。例如,如果規則具有 /img/* 的路徑模式,則該規則會將 /img/picture.jpg 的請求轉送到指定的目標群組,作為對 /img/picture.jpg 的請求。

範例 的範例路徑模式條件 AWS CLI

您可以在建立或修改規則時指定條件。如需詳細資訊,請參閱 create-rulemodify-rule 命令。當請求的 URL 包含指定的字串時,即滿足下列條件。

[ { "Field": "path-pattern", "PathPatternConfig": { "Values": ["/img/*"] } } ]

查詢字串條件

您可以使用查詢字串條件來設定規則,以根據查詢字串中的鍵值組或值來路由傳送請求。比對評估不區分大小寫。支援下列萬用字元:* (符合 0 個或多個字元) 和 ? (確切符合 1 個字元)。

範例 的範例查詢字串條件 AWS CLI

您可以在建立或修改規則時指定條件。如需詳細資訊,請參閱 create-rulemodify-rule 命令。當請求的查詢字串包含鍵值組 "version=v1" 或任何設為 "example" 的索引鍵時,即滿足下列條件。

[ { "Field": "query-string", "QueryStringConfig": { "Values": [ { "Key": "version", "Value": "v1" }, { "Value": "*example*" } ] } } ]

來源 IP 地址條件

您可以使用來源 IP 地址條件來設定規則,以根據請求的來源 IP 地址來路由傳送請求。必須以 CIDR 格式指定 IP 地址。IPv4 和 IPv6 地址都可用。不支援萬用字元。您無法指定來源 IP 規則條件的 255.255.255.255/32 CIDR。

如果用戶端位在 proxy 後方,則此為 proxy 的 IP 地址,而不是用戶端的 IP 地址。

X-Forwarded-For 標頭中的地址不滿足此條件。若要搜尋 X-Forwarded-For 標頭中的地址,請使用 http-header 條件。

範例 的範例來源 IP 條件 AWS CLI

您可以在建立或修改規則時指定條件。如需詳細資訊,請參閱 create-rulemodify-rule 命令。當請求的來源 IP 地址出現在其中一個指定的 CIDR 區塊時,即滿足下列條件。

[ { "Field": "source-ip", "SourceIpConfig": { "Values": ["192.0.2.0/24", "198.51.100.10/32"] } } ]