Elastic Load Balancing
Application Load Balancer
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

应用程序负载均衡器的侦听器

在开始使用应用程序负载均衡器之前,您必须添加一个或多个侦听器。侦听器是一个使用您配置的协议和端口检查连接请求的进程。为侦听器定义的规则可以确定负载均衡器将请求路由到一个或多个目标组中的目标的方式。

侦听器配置

侦听器支持以下协议和端口:

  • 协议:HTTP、HTTPS

  • 端口:1-65535

可以使用 HTTPS 侦听器将加密和解密的工作交给负载均衡器完成,以便应用程序可以专注于其业务逻辑。如果侦听器协议为 HTTPS,您必须在侦听器上确切地部署一个 SSL 服务器证书。有关更多信息,请参阅 Application Load Balancer 的 HTTPS 侦听器

Application Load Balancer 为 WebSockets 提供本机支持。您可以对 HTTP 和 HTTPS 侦听器同时使用 WebSocket。

Application Load Balancer 为将 HTTP/2 与 HTTPS 侦听器一起使用提供本机支持。使用一个 HTTP/2 连接最多可以并行发送 128 个请求。负载均衡器将这些请求转换为单独的 HTTP/1.1 请求,并将它们分配给目标组中的正常目标。由于 HTTP/2 可以更高效地使用前端连接,您可能注意到客户端与负载均衡器之间的连接较少。无法使用 HTTP/2 的服务器推送功能。

有关更多信息,请参阅 Elastic Load Balancing 用户指南 中的请求路由

侦听器规则

每个侦听器都具有默认规则,您也可以选择定义其他规则。每个规则都包含优先级、一个或多个操作、可选主机条件和可选路径条件。

默认规则

创建侦听器时,请为默认规则定义操作。默认规则不能有条件。如果未满足侦听器的任一规则条件,则将执行默认规则的操作。

下面是控制台中所示的默认规则的示例:

 侦听器的默认规则。

规则优先级

每个规则都有一个优先级。规则是按优先级顺序 (从最低值到最高值) 计算的。最后评估默认规则。您可以随时更改非默认规则的优先级。您不能更改默认规则的优先级。有关更多信息,请参阅 重新排序规则

规则操作

每个规则操作都具有执行操作所需的类型、顺序和信息。以下是支持的操作类型:

authenticate-cognito

[HTTPS 侦听器] 使用 Amazon Cognito 验证用户身份。

authenticate-oidc

[HTTPS 侦听器] 使用符合 OpenID Connect (OIDC) 条件的身份提供商验证用户身份。

fixed-response

返回自定义 HTTP 响应。

forward

将请求转发到指定目标组。

redirect

将请求从一个 URL 重定向到另一个。

先执行顺序值最小的操作。待执行的最后一个操作必须是 forwardredirectfixed-response 操作。每个规则必须包括且只能包括以下一种操作类型:forwardredirectfixed-response

可以随时编辑规则。有关更多信息,请参阅 编辑规则

规则条件

规则条件有两种类型:主机和路径。每个规则最多可以具有一个主机条件和一个路径条件。当规则的条件满足时,将执行其操作。

重定向操作

您可以使用 redirect 操作将客户端请求从一个 URL 重定向到另一个。根据需要,您可以将重定向配置为临时 (HTTP 302) 或永久 (HTTP 301)。

URI 包括以下组成部分:

protocol://hostname:port/path?query

您必须修改以下至少一个组成部分以避免重定向循环:协议、主机名、用户名、端口或路径。未修改的任何组成部分将保留其原始值。

protocol

协议(HTTP 或 HTTPS)。您可以将 HTTP 重定向到 HTTP、将 HTTP 重定向到 HTTPS 以及将 HTTPS 重定向到 HTTPS。不能将 HTTPS 重定向到 HTTP。

hostname

主机名。

port (远程调试端口)

端口(1 到 65535)。

path

绝对路径,以前导“/”开头。

query

查询参数。

您可以通过以下保留关键字,在目标 URL 中重用原始 URL 的 URI 组成部分:

  • #{protocol} – 保留协议。在协议和查询组成部分中使用

  • #{host} – 保留域。在主机名、路径和查询组成部分中使用

  • #{port} – 保留端口。在端口、路径和查询组成部分中使用

  • #{path} – 保留路径。在路径和查询组成部分中使用

  • #{query} – 保留查询参数。在查询组成部分中使用

例如,以下规则设置永久重定向到一个 URL,该 URL 使用 HTTPS 协议和指定的端口 (40443),但保留原始主机名、路径和查询参数。此屏幕等同于“https://#{host}:40443/#{path}?#{query}”。

 将请求重定向到一个 URL 的规则,该 URL 使用 HTTPS 协议和指定的端口 (40443),但保留原始域、路径和原始 URL 的查询参数。

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

 将请求重定向到一个 URL 的规则,该 URL 包含原始协议、端口、主机名和查询参数,并使用 #{path} 关键字来创建修改的路径。

执行 redirect 操作时,操作记录在访问日志中。有关更多信息,请参阅 访问日志条目。成功 redirect 操作的计数在 HTTP_Redirect_Count 指标中报告。有关更多信息,请参阅 应用程序负载均衡器 指标

要将 redirect 操作添加到现有规则或者创建具有 redirect 操作的新规则,请参阅Application Load Balancer 的侦听器规则

固定响应操作

您可以使用 fixed-response 操作删除客户端请求并返回自定义 HTTP 响应。您可以使用此操作返回 2XX、4XX 或 5XX 响应代码和可选的消息。

采取 fixed-response 操作时,操作和重定向目标的 URL 记录在访问日志中。有关更多信息,请参阅 访问日志条目。成功 fixed-response 操作的计数在 HTTP_Fixed_Response_Count 指标中报告。有关更多信息,请参阅 应用程序负载均衡器 指标

要将 fixed-response 操作添加到现有规则或者创建具有 fixed-response 操作的新规则,请参阅Application Load Balancer 的侦听器规则

主机条件

您可使用主机条件定义一些规则,用于根据主机标头中的主机名将请求转发到不同的目标组 (也称为基于主机的路由)。这使您能够使用单个负载均衡器支持多个域。

每个主机条件有一个主机名。如果主机标头中的主机名与侦听器规则中的主机名完全匹配,则将使用该规则来路由请求。

主机名不区分大小写,长度上限为 128 个字符,并且可包含以下任何字符:

  • A-Z、a-z、0-9

  • - .

  • * (匹配 0 个或多个字符)

  • ?(完全匹配 1 个字符)

可包含多达三个通配符。您必须至少包括一个“.”开头。在最后一个“.”之后只能包含字母数字字符。character.

主机名示例

  • example.com

  • test.example.com

  • *.example.com

规则 *.example.comtest.example.com 匹配,但与 example.com 不匹配。

控制台示例

下面是具有控制台中所示的主机条件的规则的示例。如果主机标头中的主机名与 *.example.com 匹配,则请求将转发到名为 my-web-servers 的目标组。有关更多信息,请参阅 添加规则

 具有主机条件的侦听器规则。

路径条件

您可使用路径条件定义根据请求中的 URL 将请求转发到不同的目标组 (也称为基于路径的路由) 的规则。

每个路径条件都有一个路径模式。如果请求中的 URL 与侦听器规则中的路径模式完全匹配,则将使用该规则来路由请求。

路径模式区分大小写,长度最多为 128 个字符,并且可包含以下任何字符。可包含多达三个通配符。

  • A-Z、a-z、0-9

  • _ - . $ / ~ " ' @ : +

  • & (使用 &)

  • * (匹配 0 个或多个字符)

  • ?(完全匹配 1 个字符)

示例路径模式

  • /img/*

  • /js/*

路径模式用于路由请求,而不是更改请求。例如,如果一个规则具有路径模式 /img/*,此规则会将 /img/picture.jpg 的请求作为 /img/picture.jpg 的请求转发给指定目标组。

控制台示例

下面是具有控制台中所示的路径条件的规则的示例。如果请求中的 URL 与 /img/* 匹配,则会将请求转发到名为 my-targets 的目标组。有关更多信息,请参阅 添加规则

 具有路径条件的侦听器规则。