为应用程序负载均衡器添加侦听器规则 - ELB

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为应用程序负载均衡器添加侦听器规则

创建侦听器时,您会定义一条默认规则。您可以随时定义其他规则。每条规则都必须指定一个操作和一个条件,并且可以选择指定转换。有关更多信息,请参阅下列内容:

Console
添加一项规则
  1. 打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择负载均衡器

  3. 选择负载均衡器。

  4. 侦听器和规则选项卡上,选择协议:端口列中的文本以打开侦听器的详细信息页面。

  5. 规则选项卡上,选择添加规则

  6. (可选)要为规则指定名称,请展开名称和标签,然后输入名称。要添加其他标签,请选择添加其他标签,然后输入标签键和标签值。

  7. 对于每个条件,选择添加条件,选择条件类型,然后提供所需的条件值:

    • 主机标头:选择匹配模式类型并输入主机标头。

      值匹配:最多 128 个字符。不区分大小写。允许的字符是 a-z、A-Z、0-9;以下特殊字符:-_.;以及通配符(* 和 ?)。您必须包含至少一个“.”字符。在最后一个“.”字符之后只能包含字母数字字符。

      正则表达式匹配:最多 128 个字符。

    • 路径:选择匹配模式类型并输入路径。

      值匹配:最多 128 个字符。区分大小写。允许的字符是 a-z、A-Z、0-9;以下特殊字符:_-.$/~"'@:+;&;以及通配符(* 和 ?)。

      正则表达式匹配:最多 128 个字符。

    • 查询字符串:输入键值对或不带键的值。

      最多 128 个字符。不区分大小写。允许的字符为 a-z、A-Z、0-9;以下特殊字符:_-.$/~"'@:+&()!,;=;以及通配符(* 和 ?)。

    • HTTP 请求方法:输入 HTTP 请求方法。

      最多 40 个字符。区分大小写。允许的字符为 A-Z,以及以下特殊字符:-_。不支持通配符。

    • HTTP 标头:选择匹配模式类型,然后输入标头名称和比较字符串。

      • HTTP 标头名称– 规则将评估包含此标头的请求以确认匹配值。

        值匹配:最多 40 个字符。不区分大小写。允许的字符是 a-z、A-Z、0-9 和以下特殊字符:*?-!#$%&'+.^_`|~。不支持通配符。

        正则表达式匹配:最多 128 个字符。

      • HTTP 标头值 – 输入要与 HTTP 标头值进行比较的字符串。

        值匹配:最多 128 个字符。不区分大小写。允许的字符为 a-z、A-Z、0-9;空格;以下特殊字符:!"#$%&'()+,./:;<=>@[]^_`{|}~-;以及通配符(* 和 ?)。

        正则表达式匹配:最多 128 个字符。

    • 源 IP – 以 CIDR 格式定义源 IP 地址。两 IPv4 者 IPv6 CIDRs 都允许。不支持通配符。

  8. (可选)要添加转换,请选择添加转换,选择转换类型,然后输入要匹配的正则表达式和替换字符串。

  9. (可选,仅限 HTTPS 侦听器)对于预路由操作,请选择以下操作之一:

  10. 对于 “路由操作”,请选择以下操作之一:

    • 转发到目标组:选择一个目标组。要添加其他目标组,请选择添加目标组,然后选择一个目标组,检查相对权重并根据需要更新权重。如果在任何目标组上启用了粘性,则必须启用组级粘性。

    • 重定向到 URL:在 URI 部分选项卡上分别输入每个部分,或者在完整 URL选项卡上输入完整的地址,从而输入 URL。对于状态代码,根据您的需求选择临时(HTTP 302)或永久(HTTP 301)。

    • 返回固定响应:输入要为已删除的客户端请求返回的响应代码。您也可以指定内容类型响应正文

  11. 选择下一步

  12. 对于优先级,输入一个介于 1 至 50000 之间的值。规则是按优先级顺序(从最低值到最高值)评估的。

  13. 选择下一步

  14. 审核和创建页面,选择创建

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