

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

# 网络负载均衡器的侦听器
<a name="load-balancer-listeners"></a>

*侦听器*是一个使用您配置的协议和端口检查连接请求的进程。您必须至少添加一个侦听器，然后才能开始使用网络负载均衡器。如果您的负载均衡器没有侦听器，则无法接收来自客户端的流量。您为侦听器定义的规则决定了负载均衡器会如何将请求路由到您注册的目标（例如 EC2 实例）。

**Topics**
+ [侦听器配置](#listener-configuration)
+ [默认操作](#default-actions)
+ [侦听器属性](#listener-attributes)
+ [安全侦听器](#secure-listeners)
+ [ALPN 策略](#alpn-policies)
+ [创建侦听器](create-listener.md)
+ [服务器证书](tls-listener-certificates.md)
+ [安全策略](describe-ssl-policies.md)
+ [更新侦听器](listener-update-rules.md)
+ [更新空闲超时](update-idle-timeout.md)
+ [更新 TLS 侦听器](listener-update-certificates.md)
+ [删除侦听器](delete-listener.md)

## 侦听器配置
<a name="listener-configuration"></a>

侦听器支持以下协议和端口：
+ **协议**：TCP、TLS、UDP、TCP\$1UDP、QUIC、TCP\$1QUIC 
+ **端口**：1-65535

可以使用 TLS 侦听器将加密和解密的工作交给负载均衡器完成，以便应用程序可以专注于其业务逻辑。如果侦听器协议为 TLS，您必须在侦听器上部署至少一个 SSL 服务器证书。有关更多信息，请参阅 [服务器证书](tls-listener-certificates.md)。

如果必须确保目标解密 TLS 流量而不是负载均衡器，则可以在端口 443 上创建 TCP 侦听器，而不是创建 TLS 侦听器。通过 TCP 侦听器，负载均衡器将加密流量传递到目标，而不会对其进行解密。

您可以使用 QUIC 侦听器来接受 QUIC 流量。根据规定，Network Load Balancer 充当直通负载均衡器[RFC9000](https://tools.ietf.org/html/rfc9000)。利用 QUIC 侦听器和支持 QUIC 的后端，为移动设备实现无缝连接迁移。

要在同一端口上同时支持 TCP 和 UDP，请创建一个 TCP\$1UDP 侦听器。TCP\$1UDP 侦听器的目标组必须使用 TCP\$1UDP 协议。

要在同一端口上同时支持 TCP 和 QUIC，请创建一个 TCP\$1QUIC 侦听器。TCP\$1QUIC 侦听器的目标组必须使用 TCP\$1QUIC 协议。

双栈负载均衡器的 UDP 侦听器需要 IPv6 目标组。

WebSockets 只有 TCP、TLS、TCP\$1UDP 和 TCP\$1QUIC 侦听器支持。

QUIC 流量不支持版本协商。QUIC v1 是唯一受支持的 QUIC 版本。

发送到已配置侦听器的所有网络流量都归类为预期流量。与配置的侦听器不匹配的网络流量被归类为非预期流量。除类型 3 以外的 ICMP 请求也被视为意外流量。网络负载均衡器会丢弃意外流量，而不会将其转发到任何目标。如果发送到已配置侦听器的侦听器端口的 TCP 数据包不是新的连接，或者不是有效 TCP 连接的一部分，则将通过 TCP 重置 (RST) 拒绝。

有关更多信息，请参阅 *Elastic Load Balancing 用户指南*中的[请求路由](https://docs.amazonaws.cn/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html#request-routing)。

## 默认操作
<a name="default-actions"></a>

创建侦听器时，您需要指定路由请求的默认操作。默认操作将请求转发到您指定的目标组。

**向多个目标组分配流量**  
如果您为默认操作指定多个目标组，那么请求将根据这些目标组的相对权重进行分配。您必须为每个目标组指定 0 至 999 之间的权重值。权重为 0 的目标组不会收到任何流量。在您添加目标组或更新目标组权重后，新连接将根据新的目标组权重进行路由。现有连接不受影响，将继续按常规方式运行直至关闭。

例如，如果指定两个目标组，每个目标组的权重为 10，则每个目标组将接收一半的请求。如果指定两个目标组，一个权重为 10，另一个权重为 20，则权重为 20 的目标组接收的请求数量是权重为 10 的目标组的两倍。

常见用例是从一个目标组向另一个目标组迁移流量。这意味着您需逐步增加新目标组的权重，同时降低原始目标组的权重，直至其变为 0。如果您将目标组的权重更新为 0，经过短暂时间后，该组将不再接收新的连接，且现有连接也将关闭。

**粘性会话和加权目标组**  
在监听器上执行的转发操作可指定是否启用目标组粘性。启用后，目标组粘性会使来自相同源 IP 地址的后续连接优先选择先前选定的目标组。

**注意事项**
+ 对于 TLS 侦听器，您无法将 TCP 目标组和 TLS 目标组同时添加到侦听器规则中。所有目标组必须使用相同的协议。
+ 对于 TLS 侦听器，不支持目标组粘性。
+ 对于双栈负载均衡器，您不能将 IPv4 目标组和 IPv6 目标组同时添加到同一个默认操作中。默认操作中的所有目标组必须使用相同的 IP 地址类型。
+ 对于侦听器，如果转发操作包含多个目标组且其中任何一个启用了粘性策略，则该转发操作也必须启用目标组粘性策略。

## 侦听器属性
<a name="listener-attributes"></a>

网络负载均衡器的侦听器属性如下：

`tcp.idle_timeout.seconds`  
tcp 空闲超时值（以秒为单位）。有效范围为 60-6000 秒。默认值为 350 秒。

有关更多信息，请参阅 [更新空闲超时](update-idle-timeout.md)。

## 安全侦听器
<a name="secure-listeners"></a>

要使用 TLS 侦听器，您必须在负载均衡器上部署至少一个服务器证书。负载均衡器先使用此服务器证书终止前端连接，再解密来自客户端的请求，然后将请求发送到目标。注意，如果您需要将加密流量传输至目标且负载均衡器不对其进行解密，则可以在端口 443 上创建 TCP 侦听器，而不是创建 TLS 侦听器。负载均衡器将按原样将请求传输至目标，而不解密请求。

Elastic Load Balancing 使用 TLS 协商配置（称为安全策略）在客户端与负载均衡器之间协商 TLS 连接。安全策略是协议和密码的组合。协议在客户端与服务器之间建立安全连接，确保在客户端与负载均衡器之间传递的所有数据都是私密数据。密码是使用加密密钥创建编码消息的加密算法。协议使用多种密码对 Internet 上的数据进行加密。在 连接协商过程中，客户端和负载均衡器会按首选项顺序提供各自支持的密码和协议的列表。为安全连接选择服务器列表中与任一客户端的密码匹配的第一个密码。

网络负载均衡器不支持双向 TLS 身份验证 (mTLS)。要获得 mTLS 支持，请创建 TCP 侦听器，而不是 TLS 侦听器。负载均衡器按原样传输请求，因此您可以在目标上实施 mTLS。

网络负载均衡器支持使用 PSK 进行 TLS 1.3 的 TLS 恢复，以及使用会话票证进行 TLS 1.2 及更早版本的 TLS 恢复。不支持基于会话 ID 的恢复，也不支持在侦听器中配置多个证书并使用 SNI 时的恢复。未实现 0-RTT 数据功能和 early\$1data 扩展。

有关相关演示，请参阅[网络负载均衡器上的 TLS 支持](https://exampleloadbalancer.com/nlbtls_demo.html)和[网络负载均衡器上的 SNI 支持](https://exampleloadbalancer.com/nlbsni_demo.html)。

## ALPN 策略
<a name="alpn-policies"></a>

应用层协议协商 (ALPN) 是在最初的 TLS 握手 hello 消息上发送的 TLS 扩展。通过 ALPN，应用层能够协商应在安全连接（例如 HTTP/1 和 HTTP/2）上使用什么协议。

当客户端启动 ALPN 连接时，负载均衡器将客户端 ALPN 首选项列表与其 ALPN 策略进行比较。如果客户端支持来自 ALPN 策略的协议，则负载均衡器会根据 ALPN 策略的首选项列表建立连接。否则，负载均衡器不使用 ALPN。支持的 ALPN 策略

以下是支持的 ALPN 策略：

`HTTP1Only`  
仅协商 HTTP/1.\$1。ALPN 首选项列表为 http/1.1、http/1.0。

`HTTP2Only`  
仅协商 HTTP/2。ALPN 首选项列表为 h2。

`HTTP2Optional`  
首选 HTTP/1.\$1 而不是 HTTP/2（这对 HTTP/2 测试非常有用）。ALPN 首选项列表为 http/1.1、http/1.0、h2。

`HTTP2Preferred`  
首选 HTTP/2 而不是 HTTP/1.\$1。ALPN 首选项列表为 h2、http/1.1、http/1.0。

`None`  
不协商 PN。这是默认模式。

**启用 ALPN 连接**  
您可以在创建或修改 TLS 侦听器时启用 ALPN 连接。有关更多信息，请参阅[添加侦听器](create-listener.md#add-listener)和[更新 ALPN 策略](listener-update-certificates.md#update-alpn-policy)。