

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

# 经典负载均衡器的侦听器
<a name="elb-listener-config"></a>

在开始使用 Elastic Load Balancing 之前，您必须为经典负载均衡器配置一个或多个*侦听器*。侦听器是用于检查连接请求的进程。使用前端（客户端到负载均衡器）连接的协议和端口和后端（负载均衡器到后端实例）连接的协议和端口配置侦听器。

Elastic Load Balancing 支持以下协议：
+ HTTP
+ HTTPS（安全 HTTP）
+ TCP
+ SSL (安全 TCP)

HTTPS 协议使用 SSL 协议在 HTTP 层上建立安全连接。您也可以使用 SSL 协议在 TCP 层上建立安全连接。

如果前端连接使用 TCP 或 SSL，则您的后端连接可以使用 TCP 或 SSL。如果前端连接使用 HTTP 或 HTTPS，则您的后端连接可以使用 HTTP 或 HTTPS。

后端实例可以侦听端口 1-65535。

负载均衡器可以侦听以下端口：1–65535

**Topics**
+ [协议](#elb-listener-protocols)
+ [HTTPS/SSL 侦听器](#https-ssl-listeners)
+ [经典负载均衡器的侦听器配置](using-elb-listenerconfig-quickref.md)
+ [HTTP 标头和经典负载均衡器](x-forwarded-headers.md)

## 协议
<a name="elb-listener-protocols"></a>

典型 Web 应用程序的通信可以穿过硬件和软件的各个分层。每层都会提供特定的通信功能。对通信功能的控制可依次由一层传递至下一层。开放系统互连 (OSI) 会定义模型框架，以在这些分层中实施标准通信格式，这个框架被称为*协议*。有关更多信息，请参阅 Wikipedia 中的 [OSI 模型](https://en.wikipedia.org/wiki/OSI_model)。

使用 Elastic Load Balancing 时，您需要对分层 4 和分层 7 有基本的了解。分层 4 是传输层，描述了客户端到您的后端实例之间通过负载均衡器的传输控制协议 (TCP) 连接。分层 4 是可为您的负载均衡器配置的最低分层。分层 7 是应用程序层，描述了客户端到负载均衡器、以及负载均衡器到您的后端实例之间的超文本传送协议 (HTTP) 和 HTTPS (安全 HTTP) 连接。

安全套接字层 (SSL) 协议主要用于对通过不安全网络（如 Internet）传输的机密数据进行加密。SSL 协议在客户端与后端服务器之间建立安全连接，确保在您的客户端和服务器之间传递的所有数据都是私有且完整的。

### TCP/SSL 协议
<a name="using-elb-tcp-layer4"></a>

如果您在前端和后端连接中均使用 TCP (分层 4)，您的负载均衡器会将请求转发到后端实例，而不修改标头。负载均衡器收到请求之后，会尝试在侦听器配置中指定的端口上打开与后端实例的 TCP 连接。

由于负载均衡器会拦截客户端与您的后端实例之间的流量，因此您的后端实例的访问日志中将包含负载均衡器的 IP 地址而不是原始客户端的 IP 地址。您可以启用代理协议，它会添加一个包含客户端的连接信息（如源 IP 地址、目标 IP 地址和端口号）的标头。该标头随后作为请求的一部分发送到后端实例。您可以解析请求的第一行来检索连接信息。有关更多信息，请参阅 [为经典负载均衡器配置代理协议](enable-proxy-protocol.md)。

通过使用此配置，您将不会收到会话粘性或 X-Forwarded 标头的 Cookie。

### HTTP/HTTPS 协议
<a name="using-elb-http-layer7"></a>

如果前端和后端连接均使用 HTTP（分层 7），负载均衡器会解析请求中的标头，然后将请求发送到后端实例。

对于 HTTP/HTTPS 负载均衡器后面的每个已注册且运行良好的实例，Elastic Load Balancing 都会打开并维护一个或多个 TCP 连接。这些连接可确保始终有已建立的连接，该连接已准备好接收 HTTP/HTTPS 请求。

HTTP 请求和 HTTP 响应使用标头字段发送有关 HTTP 消息的信息。Elastic Load Balancing 支持 `X-Forwarded-For` 标头。因为负载均衡器会拦截客户端和服务器之间的流量，因此您的服务器访问日志中将仅含有负载均衡器的 IP 地址。要查看客户端的 IP 地址，请使用 `X-Forwarded-For` 请求标头。有关更多信息，请参阅 [X-Forwarded-For](x-forwarded-headers.md#x-forwarded-for)。

使用 HTTP/HTTPS 时，您可在负载均衡器上启用粘性会话。粘性会话将用户的会话绑定到特定后端实例。这样可以确保在会话期间，来自同一用户的所有请求均将被发送到相同的后端实例中。有关更多信息，请参阅 [为经典负载均衡器配置粘性会话](elb-sticky-sessions.md)。

负载均衡器并不支持所有 HTTP 扩展名。如果负载均衡器因为意外的方法、响应码或其他非标准 HTTP 1.0/1.1 实施而无法终止请求，则需要使用 TCP 侦听器。

## HTTPS/SSL 侦听器
<a name="https-ssl-listeners"></a>

您可以使用以下安全功能创建负载均衡器。

### SSL 服务器证书
<a name="ssl-cert"></a>

如果前端连接使用 HTTPS 或 SSL，则必须在负载均衡器上部署 X.509 证书 (SSL 服务器证书)。负载均衡器先解密来自客户端的请求，然后再将请求发送到后端实例 (称为 *SSL 终端*)。有关更多信息，请参阅 [经典负载均衡器的 SSL/TLS 证书](ssl-server-cert.md)。

如果您不希望负载均衡器处理 SSL 终止 (称为 *SSL 卸载*)，可在前端和后端连接均使用 TCP，并为处理请求的已注册实例部署证书。

### SSL 协商
<a name="using-elb-cipher-settings"></a>

Elastic Load Balancing 将提供预定义的 SSL 协商配置，在客户端与您的负载均衡器之间建立连接时，这些配置用于进行 SSL 协商。SSL 协商配置提供了广泛的客户端兼容性，并使用名为*密码*的高强度加密算法。然而，某些使用案例可能需要对网络中的所有数据进行加密且只允许使用特定密码。某些安全合规性标准 (如 PCI、SOX 等) 可能要求客户端提供一组特定协议和密码，以确保符合安全标准。在此类情况下，您可以根据您的特定要求创建自定义 SSL 协商配置。您的密码和协议应在 30 秒内生效。有关更多信息，请参阅 [经典负载均衡器的 SSL 协商配置](elb-ssl-security-policy.md)。

### 后端服务器身份验证
<a name="using-elb-backend-auth"></a>

如果后端连接使用 HTTPS 或 SSL，您可以启用已注册实例的身份验证。之后您即可使用身份验证过程来确保实例仅接受加密的通信，并确保每个已注册实例具有正确的公有密钥。

有关更多信息，请参阅[配置后端服务器身份验证](elb-create-https-ssl-load-balancer.md#configure_backendauth_clt)。