如何在 AWS Global Accelerator 中保留客户端 IP 地址 - AWS Global Accelerator

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

如何在 AWS Global Accelerator 中保留客户端 IP 地址

AWS Global Accelerator 为 Amazon EC2 实例和应用程序负载均衡器以不同方式保留客户端的源 IP 地址:

  • 对于 EC2 实例终端节点,将为所有流量保留客户端的 IP 地址。

  • 对于具有客户端 IP 地址保留的 Application Load Balancer 器终端节点,全局加速器与 Application Load Balancer 器一起工作,以提供X-Forwarded标头,X-Forwarded-For,其中包括原始客户端的 IP 地址,以便您的 Web 层可以访问它。

HTTP 请求和 HTTP 响应使用标头字段发送有关 HTTP 消息的信息。标头字段为冒号分隔的名称值对,各个值对之间由回车符 (CR) 和换行符 (LF) 进行分隔。RFC 2616 中定义了标准 HTTP 标头字段集,消息头。此外还有应用程序广泛使用的非标准 HTTP 标头。某些非标准 HTTP 标头具有X-Forwardedprefix.

由于 Application Load Balancer 终止传入的 TCP 连接并创建到您的后端目标的新连接,因此它不会将客户端 IP 地址一直保留到您的目标代码(例如实例、容器或 Lambda 代码)。您的目标在 TCP 数据包中看到的源 IP 地址是 Application Load Balancer 的 IP 地址。但是,Application Load Balancer 通过将原始客户端 IP 地址从原始数据包的回复地址中删除并将其插入 HTTP 标头,然后再通过新的 TCP 连接将请求发送到您的后端,从而保留原始客户端 IP 地址。

这些区域有:X-Forwarded-For请求标头的格式如下所示:

X-Forwarded-For: client-ip-address

以下示例显示了X-Forwarded-ForIP 地址为 203.0.113.7 的客户端的请求标头。

X-Forwarded-For: 203.0.113.7