本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
接聽程式規則的條件類型
條件定義傳入請求必須符合的條件,接聽程式規則才能生效。如果請求符合規則的條件,則會依照規則的動作指定來處理請求。每個規則條件具有類型和組態資訊。Application Load Balancer 支援接聽程式規則的下列條件類型。
條件類型
host-header
-
根據每個請求的主機名稱來路由傳送。如需詳細資訊,請參閱主機條件。
http-header
-
根據每個請求的 HTTP 標頭來路由傳送。如需詳細資訊,請參閱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)。
示範
如需示範,請參閱 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-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、a-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)。
只有在 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-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 地址都可用。不支援萬用字元。您無法指定來源 IP 規則條件的 255.255.255.255/32
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"] } } ]