本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
监听器规则的操作类型
操作决定了当满足侦听器规则的条件时,负载均衡器如何处理请求。每条规则必须至少有一个操作来指定如何处理匹配的请求。每个规则操作都有类型和配置信息。应用程序负载均衡器支持监听器规则的以下操作类型。
操作类型
authenticate-cognito
-
[HTTPS 侦听器] 使用 Amazon Cognito 验证用户身份。有关更多信息,请参阅 配置用户身份验证。
authenticate-oidc
-
[HTTPS 侦听器] 使用符合 OpenID Connect (OIDC) 条件的身份提供商验证用户身份。有关更多信息,请参阅 配置用户身份验证。
fixed-response
-
返回自定义 HTTP 响应。有关更多信息,请参阅 固定响应操作。
forward
-
将请求转发到指定目标组。有关更多信息,请参阅 转发操作。
redirect
-
将请求从一个 URL 重定向到另一个。有关更多信息,请参阅 重定向操作。
动作基础知识
-
每条规则必须恰好包含以下路由操作之一:
forward
redirect
fixed-response
、或,并且必须是最后要执行的操作。 -
HTTPS 侦听器可以有包含用户身份验证操作和路由操作的规则。
-
当有多个操作时,优先级最低的操作将首先执行。
-
如果协议版本是 gRPC 或 HTTP/2,则唯一支持的操作是
forward
操作。
固定响应操作
fixed-response
操作会丢弃客户端请求并返回自定义 HTTP 响应。您可以使用此操作返回 2XX、4XX 或 5XX 响应代码和可选的消息。
采取 fixed-response
操作时,操作和重定向目标的 URL 记录在访问日志中。有关更多信息,请参阅 访问日志条目。成功 fixed-response
操作的计数在 HTTP_Fixed_Response_Count
指标中报告。有关更多信息,请参阅 Application Load Balancer 指标。
例 的固定响应操作示例 Amazon CLI
您可以在创建或修改规则时指定操作。有关更多信息,请参阅 create-rule 和 modify-rule 命令。以下操作发送具有指定状态代码和消息正文的固定响应。
[ { "Type": "fixed-response", "FixedResponseConfig": { "StatusCode": "200", "ContentType": "text/plain", "MessageBody": "Hello world" } } ]
转发操作
forward
操作会将请求路由至其目标组。在添加 forward
操作之前,请创建目标组并向其添加目标。有关更多信息,请参阅 为您的应用程序负载均衡器创建目标组。
如果为某个 forward
操作指定多个目标组,您必须为每个目标组指定权重。每个目标组权重都是一个介于 0 到 999 之间的值。对于将侦听器规则与加权目标组匹配的请求,会根据这些目标组的权重分配给这些目标组。例如,如果指定两个目标组,每个目标组的权重为 10,则每个目标组将接收一半的请求。如果指定两个目标组,一个权重为 10,另一个权重为 20,则权重为 20 的目标组接收的请求将是另一个目标组的两倍。
如果您配置规则以在加权目标组之间分配流量,并且其中一个目标组为空或只有不健康的目标,则负载均衡器不会自动故障转移到目标运行状况良好的目标组。
默认情况下,配置规则以便在加权目标组之间分配流量时,并不能保证支持粘性会话。为了确保支持粘性会话,请为规则启用目标组粘性。当负载均衡器首次将请求路由到加权目标组时,它会生成一个名为的 Cookie AWSALBTG ,用于对有关选定目标组的信息进行编码,对 Cookie 进行加密,并将该 Cookie 包含在对客户端的响应中。客户端应该在向负载均衡器的后续请求中包含它收到的 cookie。当负载均衡器收到与启用目标组粘性的规则匹配并且包含 Cookie 的请求时,请求将路由到 Cookie 中指定的目标组。
Application Load Balancer 不支持 URL 编码的 Cookie 值。
对于 CORS(跨源资源共享)请求,某些浏览器需要 SameSite=None; Secure
来启用粘性。在这种情况下,Elastic Load Balancing 会生成第二个 cookie AWSALBTGCORS,其中包含与原始粘性 cookie 相同的信息以及此SameSite
属性。客户端会同时收到这两个 Cookie。
例 带有一个目标组的转发操作示例
您可以在创建或修改规则时指定操作。有关更多信息,请参阅 create-rule 和 modify-rule 命令。以下操作将请求转发到指定的目标组。
[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:
us-west-2
:123456789012
:targetgroup/my-targets
/73e2d6bc24d8a067
" } ] } } ]
例 带有两个加权目标组的转发操作示例
下面的操作将根据每个目标组的权重,将请求转发到两个指定的目标组。
[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:
us-west-2
:123456789012
:targetgroup/blue-targets
/73e2d6bc24d8a067
", "Weight": 10 }, { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2
:123456789012
:targetgroup/green-targets
/09966783158cda59
", "Weight": 20 } ] } } ]
例 启用粘性的转发操作示例
如果您具有一个包含多个目标组的转发操作,并且一个或多个目标组已启用了粘性会话,则必须启用目标组粘性。
下面的操作将请求转发到两个指定的目标组,并启用了目标组粘性。对于不包含粘性 Cookie 的请求,将根据每个目标组的权重进行传输。
[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:
us-west-2
:123456789012
:targetgroup/blue-targets
/73e2d6bc24d8a067
", "Weight": 10 }, { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2
:123456789012
:targetgroup/green-targets
/09966783158cda59
", "Weight": 20 } ], "TargetGroupStickinessConfig": { "Enabled": true, "DurationSeconds": 1000 } } } ]
重定向操作
redirect
操作将客户端请求从一个 URL 重定向到另一个 URL。根据需要,您可以将重定向配置为临时 (HTTP 302) 或永久 (HTTP 301)。
URI 包括以下组成部分:
protocol
://hostname
:port
/path
?query
您必须修改以下至少一个组成部分以避免重定向循环:协议、主机名、用户名、端口或路径。未修改的任何组成部分将保留其原始值。
- 协议
-
协议(HTTP 或 HTTPS)。您可以将 HTTP 重定向到 HTTP、将 HTTP 重定向到 HTTPS 以及将 HTTPS 重定向到 HTTPS。不能将 HTTPS 重定向到 HTTP。
- hostname
-
主机名。主机名不区分大小写,长度最多为 128 个字符,由字母数字字符、通配符(* 和 ?)及连字符 (-) 组成。
- port (远程调试端口)
-
端口(1 到 65535)。
- path
-
绝对路径,以前导“/”开头。路径区分大小写,长度最多为 128 个字符,由字母数字字符、通配符(* 和 ?)、&(使用 &)及以下特殊字符组成:_-.$/~"'@:+。
- 查询
-
查询参数。最大长度为 128 个字符。
您可以通过以下保留关键字,在目标 URL 中重用原始 URL 的 URI 组成部分:
-
#{protocol}
– 保留协议。在协议和查询组成部分中使用。 -
#{host}
– 保留域。在主机名、路径和查询组成部分中使用。 -
#{port}
– 保留端口。在端口、路径和查询组成部分中使用。 -
#{path}
– 保留路径。在路径和查询组成部分中使用。 -
#{query}
– 保留查询参数。在查询组成部分中使用。
执行 redirect
操作时,操作记录在访问日志中。有关更多信息,请参阅 访问日志条目。成功 redirect
操作的计数在 HTTP_Redirect_Count
指标中报告。有关更多信息,请参阅 Application Load Balancer 指标。
例 使用控制台的重定向操作的示例
以下规则设置永久重定向到一个 URL,该 URL 使用 HTTPS 协议和指定的端口 (40443),但保留原始主机名、路径和查询参数。此屏幕等同于“https://#{host}:40443/#{path}?#{query}”。

以下规则设置永久重定向到一个 URL,该 URL 包含原始协议、端口、主机名和查询参数,并使用 #{path}
关键字来创建修改的路径。此屏幕等同于“#{protocol}://#{host}:#{port}/new/#{path}?#{query}”。

例 的重定向操作示例 Amazon CLI
您可以在创建或修改规则时指定操作。有关更多信息,请参阅 create-rule 和 modify-rule 命令。以下操作将 HTTP 请求重定向为端口 443 上的 HTTPS 请求,其主机名、路径和查询字符串与 HTTP 请求相同。
[ { "Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "Host": "#{host}", "Path": "/#{path}", "Query": "#{query}", "StatusCode": "HTTP_301" } } ]