新增 Application Load Balancer 的接聽程式規則 - Elastic Load Balancing

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

新增 Application Load Balancer 的接聽程式規則

您可以在建立接聽程式時定義預設規則。您可以隨時定義其他規則。每個規則都必須指定動作和條件,也可以選擇性地指定轉換。如需詳細資訊,請參閱下列內容:

Console
新增規則
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格上選擇 Load Balancers (負載平衡器)

  3. 選取負載平衡器。

  4. 接聽程式和規則索引標籤上,選取通訊協定:連接埠資料欄中的文字,以開啟接聽程式的詳細資訊頁面。

  5. 規則索引標籤上選擇新增規則

  6. (選用) 若要指定規則的名稱,請展開名稱和標籤,然後輸入名稱。若要新增其他標籤,請選擇新增其他標籤,然後輸入標籤索引鍵和標籤值。

  7. 針對每個條件,選擇新增條件、選擇條件類型,並提供必要的條件值:

    • 主機標頭 – 選取比對模式類型,然後輸入主機標頭。

      值比對 – 最多 128 個字元。不區分大小寫。允許的字元有 a-z、A-Z、0-9,以及下列特殊字元:-_.; 和萬用字元 (* 和 ?)。您必須至少包含一個 "." 字元。您只可以在最後的 "." 字元之後包含字母字元。

      Regex 比對 – 最多 128 個字元。

    • 路徑 – 選取比對模式類型,然後輸入路徑。

      值比對 – 最多 128 個字元。區分大小寫。允許的字元有 a-z、A-Z、0-9,以及下列特殊字元:_-.$/~"'@:+; &; 和萬用字元 (* 和 ?)。

      Regex 比對 – 最多 128 個字元。

    • 查詢字串 – 輸入 key:value 對,或不含 key 的值。

      最多 128 個字元。不區分大小寫。允許的字元有 a-z、A-Z、0-9,以及下列特殊字元: _-.$/~"'@:+&()!,;=; 和萬用字元 (* 和 ?)。

    • HTTP 請求方法 – 輸入 HTTP 請求方法。

      最多 40 個字元。區分大小寫。允許的字元有 A-Z 以及下列特殊字元:-_。不支援萬用字元。

    • HTTP 標頭 – 選取比對模式類型,然後輸入標頭的名稱和比較字串。

      • HTTP 標頭名稱 – 規則會評估內含此標頭的請求,以確認相符值。

        值比對 – 最多 40 個字元。不區分大小寫。允許的字元有 a-z、A-Z、0-9 以及下列特殊字元:*?-!#$%&'+.^_`|~。不支援萬用字元。

        Regex 比對 – 最多 128 個字元。

      • HTTP 標頭值 – 輸入要與 HTTP 標頭值比較的字串。

        值相符 最多 128 個字元。不區分大小寫。允許的字元為 a-z、A-Z、0-9; 空格;下列特殊字元:!"#$%&'()+,./:;=>@【】^_`{|}~-; 和萬用字元 (* 和 ?)。

        Regex 比對 – 最多 128 個字元。

    • 來源 IP – 以 CIDR 格式定義來源 IP 地址。IPv4 和 IPv6 CIDR 都是允許的。不支援萬用字元。

  8. (選用) 若要新增轉換,請選擇新增轉換、選擇轉換類型,然後輸入要比對的規則運算式和替代字串。

  9. (選用) 若要將身分驗證規則新增至 HTTPS 接聽程式,請選擇動作驗證使用者、選擇身分提供者,並提供必要資訊。如需詳細資訊,請參閱使用 Application Load Balancer 來驗證使用者身分

  10. 針對動作路由動作,選取下列其中一個路由動作,並提供必要資訊:

    • 轉送至目標群組 – 選擇目標群組。若要新增另一個目標群組,請選擇新增目標群組、選擇目標群組、檢閱相對權重,並視需要更新權重。如果您在任何目標群組上啟用粘性,則必須啟用群組層級粘性。

    • 重新導向至 URL – 在 URI 部分索引標籤上分別輸入每個部分,或在完整 URL 索引標籤上輸入完整地址,以輸入 URL。針對狀態碼,根據您的需求選取暫時 (HTTP 302) 或永久 (HTTP 301)。

    • 傳回固定回應 – 輸入回應碼以針對捨棄的用戶端請求傳回。或者,您可以指定內容類型回應內文

  11. 選擇下一步

  12. 針對 Priority,輸入 1-50,000 的值。規則會以從最低值到最高值的優先順序進行評估。

  13. 選擇下一步

  14. Review and create (檢閱和建立) 頁面上,選取 Create (建立)。

AWS CLI
新增規則

使用 create-rule 命令。

下列範例會建立具有 forward動作和 host-header條件的規則。

aws elbv2 create-rule \ --listener-arn listener-arn \ --priority 10 \ --conditions "Field=host-header,Values=example.com,www.example.com" \ --actions "Type=forward,TargetGroupArn=target-group-arn"

若要建立在兩個目標群組之間分配流量的向前動作,請改用下列--actions選項。

--actions '[{ "Type":"forward", "ForwardConfig":{ "TargetGroups":[ {"TargetGroupArn":"target-group-1-arn","Weight":50}, {"TargetGroupArn":"target-group-2-arn","Weight":50} ] } }]'

下列範例會建立具有 fixed-response動作和 source-ip條件的規則。

aws elbv2 create-rule \ --listener-arn listener-arn \ --priority 20 \ --conditions '[{"Field":"source-ip","SourceIpConfig":{"Values":["192.168.1.0/24","10.0.0.0/16"]}}]' \ --actions "Type=fixed-response,FixedResponseConfig={StatusCode=403,ContentType=text/plain,MessageBody='Access denied'}"

下列範例會建立具有 redirect動作和 http-header條件的規則。

aws elbv2 create-rule \ --listener-arn listener-arn \ --priority 30 \ --conditions '[{"Field":"http-header","HttpHeaderConfig":{"HttpHeaderName":"User-Agent","Values":["*Mobile*","*Android*","*iPhone*"]}}]' \ --actions "Type=redirect,RedirectConfig={Host=m.example.com,StatusCode=HTTP_302}"
CloudFormation
新增規則

定義 AWS::ElasticLoadBalancingV2::ListenerRule 類型的資源。

下列範例會建立具有 forward動作和 host-header條件的規則。符合條件時,規則會將流量傳送至指定的目標群組。

Resources: myForwardListenerRule: Type: 'AWS::ElasticLoadBalancingV2::ListenerRule' Properties: ListenerArn: !Ref myListener Priority: 10 Conditions: - Field: host-header Values: - example.com - www.example.com Actions: - Type: forward TargetGroupArn: !Ref myTargetGroup

或者,若要建立轉送動作,在滿足條件時在兩個目標群組之間分配流量,請定義 Actions ,如下所示。

Actions: - Type: forward ForwardConfig: TargetGroups: - TargetGroupArn: !Ref TargetGroup1 Weight: 50 - TargetGroupArn: !Ref TargetGroup2 Weight: 50

下列範例會建立具有 fixed-response動作和 source-ip條件的規則。

Resources: myFixedResponseListenerRule: Type: 'AWS::ElasticLoadBalancingV2::ListenerRule' Properties: ListenerArn: !Ref myListener Priority: 20 Conditions: - Field: source-ip SourceIpConfig: Values: - 192.168.1.0/24 - 10.0.0.0/16 Actions: - Type: fixed-response FixedResponseConfig: StatusCode: 403 ContentType: text/plain MessageBody: "Access denied"

下列範例會建立具有 redirect動作和 http-header條件的規則。

Resources: myRedirectListenerRule: Type: 'AWS::ElasticLoadBalancingV2::ListenerRule' Properties: ListenerArn: !Ref myListener Priority: 30 Conditions: - Field: http-header HttpHeaderConfig: HttpHeaderName: User-Agent Values: - "*Mobile*" - "*Android*" - "*iPhone*" Actions: - Type: redirect RedirectConfig: Host: m.example.com StatusCode: HTTP_302