HTTP 标头和经典负载均衡器 - Elastic Load Balancing

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

HTTP 标头和经典负载均衡器

HTTP 请求和 HTTP 响应使用标头字段发送有关 HTTP 消息的信息。标头字段为冒号分隔的名称值对,各个值对之间由回车符 (CR) 和换行符 (LF) 进行分隔。RFC 2616 信息标头中定义了标准 HTTP 标头字段集。此外还有应用程序广泛使用(和自动添加)的非标准 HTTP 标头。某些非标准 HTTP 标头具有 X-Forwarded 前缀。经典负载均衡器支持以下 X-Forwarded 标头。

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

先决条件

X-Forwarded-For

在您使用 HTTP 或 HTTPS 负载均衡器时,X-Forwarded-For 请求标头可自动添加并帮助您识别客户端的 IP 地址。因为负载均衡器会拦截客户端和服务器之间的流量,因此您的服务器访问日志中将仅含有负载均衡器的 IP 地址。要查看客户端的 IP 地址,请使用 X-Forwarded-For 请求标头。Elastic Load Balancing 会在 X-Forwarded-For 请求标头中存储客户端的 IP 地址,并将标头传递到您的服务器。如果 X-Forwarded-For 请求标头未包含在请求中,则负载均衡器会创建一个以客户端 IP 地址作为请求值的标头。否则,负载均衡器会将客户端 IP 地址附加到现有标头,并将该标头传递到您的服务器。X-Forwarded-For 请求标头可能包含多个以逗号分隔的 IP 地址。最左边的地址是首次发出请求的客户端 IP。在链中,会有任何后续代理标识符跟随。

X-Forwarded-For 请求标头采用以下形式:

X-Forwarded-For: client-ip-address

下面是 IP 地址为 203.0.113.7 的客户端的 X-Forwarded-For 请求标头的示例。

X-Forwarded-For: 203.0.113.7

以下是 IPv6 地址为的客户端的X-Forwarded-For请求标头示例2001:DB8::21f:5bff:febf:ce22:8a2e

X-Forwarded-For: 2001:DB8::21f:5bff:febf:ce22:8a2e

X-Forwarded-Proto

X-Forwarded-Proto 请求标头可帮助您识别客户端与您的负载均衡器连接时所用的协议 (HTTP 或 HTTPS)。您的服务器访问日志仅包含在服务器和负载均衡器之间使用的协议;不含任何关于在客户端和负载均衡器之间使用的协议之信息。如需判断在客户端和负载均衡器之间使用的协议,使用 X-Forwarded-Proto 请求标题。Elastic Load Balancing 会在 X-Forwarded-Proto 请求标头中存储客户端和负载均衡器之间使用的协议,并将标头传递到您的服务器。

您的应用程序或网站可以使用存储在 X-Forwarded-Proto 请求标头中的协议来呈现重新定向至适用 URL 的响应。

X-Forwarded-Proto 请求标头采用以下形式:

X-Forwarded-Proto: originatingProtocol

以下示例包含以 HTTPS 请求形式源自客户端的请求的 X-Forwarded-Proto 请求标头:

X-Forwarded-Proto: https

X-Forwarded-Port

X-Forwarded-Port 请求标头可帮助您识别客户端与您的负载均衡器连接时所用的目标端口。