本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为您的 Application Load Balancer 添加侦听器规则
在创建监听器时定义默认规则。您可以随时定义其他规则。每条规则都必须指定动作和条件,并且可以选择指定变换。有关更多信息,请参阅下列内容:
- Console
-
添加一项规则
打开亚马逊 EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择负载均衡器。
-
选择负载均衡器。
-
在侦听器和规则选项卡上,选择协议:端口列中的文本以打开侦听器的详细信息页面。
-
在规则选项卡上,选择添加规则。
-
(可选)要为规则指定名称,请展开名称和标签并输入名称。要添加其他标签,请选择添加其他标签,然后输入标签键和标签值。
-
对于每个状况,选择添加条件,选择条件类型,并提供所需的条件值:
-
主机标头-选择匹配模式类型并输入主机标头。
值匹配-最多 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 都允许。不支持通配符。
-
-
(可选)要添加转换,请选择添加转换,选择转换类型,然后输入要匹配的正则表达式和替换字符串。
-
(可选)要向 HTTPS 侦听器添加身份验证规则,请选择操作,对用户进行身份验证,选择身份提供商,然后提供所需的信息。有关更多信息,请参阅 使用 Application Load Balancer 验证用户身份。
-
在 “操作”、“路由操作” 中,选择以下路由操作之一,并提供所需信息:
-
转发至目标群组-选择目标群组。要添加其他目标组,请选择添加目标组,选择目标组,查看相对权重,然后根据需要更新权重。如果您在任何目标群组上启用了粘性,则必须启用群组级别的粘性。
-
重定向到 URL — 在 “UR I 部分” 选项卡上分别输入每个部分,或者在 “完整 URL” 选项卡上输入完整地址来输入 URL。对于状态码,请根据需要选择临时 (HTTP 302) 或永久 (HTTP 301)。
-
返回固定响应-输入已删除的客户端请求返回的响应代码。或者,您可以指定内容类型和响应正文。
-
-
选择下一步。
-
在 “优先级” 中,输入介于 1-50,000 之间的值。规则按优先级顺序从最低值到最高值进行评估。
-
选择下一步。
-
在审核和创建页面,选择创建。
- AWS CLI
-
添加一项规则
使用 create-rule 命令。
以下示例创建了一个带有
forward操作和host-header条件的规则。aws elbv2 create-rule \ --listener-arnlistener-arn\ --priority10\ --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-arnlistener-arn\ --priority20\ --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-arnlistener-arn\ --priority30\ --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:10Conditions: - Field: host-header Values: -example.com-www.example.comActions: - 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:20Conditions: - Field: source-ip SourceIpConfig: Values: -192.168.1.0/24-10.0.0.0/16Actions: - 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:30Conditions: - Field: http-header HttpHeaderConfig: HttpHeaderName: User-Agent Values: - "*Mobile*" - "*Android*" - "*iPhone*" Actions: - Type: redirect RedirectConfig: Host:m.example.comStatusCode: HTTP_302