

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

# Application Load Balancer 的侦听器
<a name="load-balancer-listeners"></a>

*侦听器*是一个使用您配置的协议和端口检查连接请求的进程。在开始使用 Application Load Balancer 之前，必须添加至少一个侦听器。如果您的负载均衡器没有侦听器，则无法接收来自客户端的流量。您为侦听器定义的规则确定负载均衡器如何将请求路由到您注册的目标。例如 EC2 实例。

**Topics**
+ [侦听器配置](#listener-configuration)
+ [侦听器属性](#listener-attributes)
+ [默认操作](#default-action)
+ [创建 HTTP 侦听器](create-listener.md)
+ [SSL 证书](https-listener-certificates.md)
+ [安全策略](describe-ssl-policies.md)
+ [创建 HTTPS 侦听器](create-https-listener.md)
+ [更新 HTTPS 侦听器](listener-update-certificates.md)
+ [侦听器规则](listener-rules.md)
+ [双向 TLS 身份验证](mutual-authentication.md)
+ [用户身份验证](listener-authenticate-users.md)
+ [JWT 验证](listener-verify-jwt.md)
+ [X-Forwarded 标头](x-forwarded-headers.md)
+ [HTTP 标头修改](header-modification.md)
+ [删除侦听器](delete-listener.md)

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

侦听器支持以下协议和端口：
+ **协议**：HTTP、HTTPS
+ **端口**：1-65535

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

如果必须确保目标解密 HTTPS 流量而不是负载均衡器，则可以在端口 443 上使用 TCP 侦听器创建网络负载均衡器。通过 TCP 侦听器，负载均衡器将加密流量传递到目标，而不会对其进行解密。有关网络负载均衡器的更多信息，请参阅[网络负载均衡器用户指南](https://docs.amazonaws.cn/elasticloadbalancing/latest/network/)。

**WebSockets**  
应用程序负载均衡器为提供原生支持。 WebSockets您可以使用 HTTP 连接升级将现有的 HTTP/1.1 连接升级为 WebSocket （`ws`或`wss`）连接。升级时，用于请求的 TCP 连接（到负载均衡器和到目标）会通过负载均衡器成为客户端与目标之间的永久 WebSocket 连接。您可以同时使用 WebSockets HTTP 和 HTTPS 侦听器。您为监听器选择的选项适用于 WebSocket 连接以及 HTTP 流量。路由到已启用目标优化器的目标组的请求不支持 Websockets。有关更多信息，[请参阅《*Amazon CloudFront 开发者指南*》中的 WebSocket 协议工作原理](https://docs.amazonaws.cn/AmazonCloudFront/latest/DeveloperGuide/distribution-working-with.websockets.html#distribution-working-with.websockets.how-it-works)。

**HTTP/2**  
Application Load Balancer 为将 HTTP/2 与 HTTPS 侦听器一起使用提供本机支持。使用一个 HTTP/2 连接最多可以并行发送 128 个请求。您可以通过协议版本使用 HTTP/2 将请求发送到目标。有关更多信息，请参阅 [协议版本](load-balancer-target-groups.md#target-group-protocol-version)。由于 HTTP/2 可以更高效地使用前端连接，您可能注意到客户端与负载均衡器之间的连接较少。无法使用 HTTP/2 的服务器推送功能。

应用程序负载均衡器的双向 TLS 身份验证在传递和验证模式下都支持 HTTP/2。有关更多信息，请参阅 [在应用程序负载均衡器中使用 TLS 进行双向身份验证](mutual-authentication.md)。

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

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

应用程序负载均衡器的侦听器属性如下：

`routing.http.request.x_amzn_mtls_clientcert_serial_number.header_name`  
使您能够修改 **X-Amzn-Mtls-Clientcert-Serial-Number** HTTP 请求标头的标头名称。

`routing.http.request.x_amzn_mtls_clientcert_issuer.header_name`  
使您能够修改 **X-Amzn-Mtls-Clientcert-Issuer** HTTP 请求标头的标头名称。

`routing.http.request.x_amzn_mtls_clientcert_subject.header_name`  
使您能够修改 **X-Amzn-Mtls-Clientcert-Subject** HTTP 请求标头的标头名称。

`routing.http.request.x_amzn_mtls_clientcert_validity.header_name`  
使您能够修改 **X-Amzn-Mtls-Clientcert-Validity** HTTP 请求标头的标头名称。

`routing.http.request.x_amzn_mtls_clientcert_leaf.header_name`  
使您能够修改 **X-Amzn-Mtls-Clientcert-Leaf** HTTP 请求标头的标头名称。

`routing.http.request.x_amzn_mtls_clientcert.header_name`  
 使您能够修改 **X-Amzn-Mtls-Clientcert** HTTP 请求标头的标头名称。

`routing.http.request.x_amzn_tls_version.header_name`  
使您能够修改 **X-Amzn-Tls-Version** HTTP 请求标头的标头名称。

`routing.http.request.x_amzn_tls_cipher_suite.header_name`  
使您能够修改 **X-Amzn-Tls-Cipher-Suite** HTTP 请求标头的标头名称。

`routing.http.response.server.enabled`  
 使您能够允许或移除 HTTP 响应服务器标头。

`routing.http.response.strict_transport_security.header_value`  
 告知浏览器只能使用 HTTPS 访问该网站，并且将来任何使用 HTTP 访问该网站的尝试都应自动转换为 HTTPS。

`routing.http.response.access_control_allow_origin.header_value`  
 指定要允许访问服务器的源。

`routing.http.response.access_control_allow_methods.header_value`  
返回从其他源访问服务器时允许使用的 HTTP 方法。

`routing.http.response.access_control_allow_headers.header_value`  
指定请求期间可以使用的标头。

`routing.http.response.access_control_allow_credentials.header_value`  
 指示浏览器在发出请求时是否应包含凭证（例如 Cookie 或身份验证）。

`routing.http.response.access_control_expose_headers.header_value`  
返回浏览器可以向发出请求的客户端公开的标头。

`routing.http.response.access_control_max_age.header_value`  
指定预检请求的结果的缓存时长（以秒为单位）。

`routing.http.response.content_security_policy.header_value`  
指定浏览器为了帮助减少某些类型安全威胁的风险而强制实施的限制。

`routing.http.response.x_content_type_options.header_value`  
指示是否应遵循 **Content-Type** 标头中公开的 MIME 类型，而不应进行更改。

`routing.http.response.x_frame_options.header_value`  
指示是否允许浏览器在 **frame**、**iframe**、**embed** 或 **object** 中呈现页面。

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

每个侦听器都有默认操作，也称为默认规则。默认规则无法删除，并且始终会最后执行。您可以创建其他规则。这些规则由优先级、一个或多个操作以及一个或多个条件组成。您可以随时添加或编辑规则。有关更多信息，请参阅 [侦听器规则](listener-rules.md)。