在AWS上转发客户端的IP地址

时间:2019-11-21 16:08:30

标签: amazon-web-services go cloud

我们的基础架构位于AWS中。所有客户端调用都会通过API网关,然后再将请求转发到连接到ECS集群的负载均衡器。我们在该集群上运行着API,其工作是聚合来自多个第三方的数据。

问题在于每个第三方根据位置返回不同的数据。

例如,我们托管在北弗吉尼亚州,并且正在根据美国的要求返回数据。但是,有些电话来自加拿大,应该返回一个不同的数据集。

我们如何将原始客户端请求的位置发送到第三方服务器,以便用户获得正确的数据?

1 个答案:

答案 0 :(得分:0)

如果使用的是负载均衡器,则后端服务器可以从负载均衡器应用的自定义标头中获取真实的客户端IP。如https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/x-forwarded-headers.html

所述
  

X-Forwarded-For

     

X-Forwarded-For请求标头可帮助您识别IP地址   使用HTTP或HTTPS负载平衡器时客户端的状态。因为负载   平衡器拦截客户端和服务器之间的流量,您的服务器   访问日志仅包含负载均衡器的IP地址。查看   客户端的IP地址,请使用X-Forwarded-For请求标头。   Elastic Load Balancing将客户端的IP地址存储在   X-Forwarded-For请求标头,并将标头传递到您的服务器。

因此,假设您可以在后端服务器上获得客户端IP,则需要能够将客户端IP传递给您正在调用的服务-因此,这取决于服务所支持的内容。如果您正在调用的服务未为IP接受显式输入参数,则它将要求您欺骗调用方的位置,除非您使用一些自定义代码生成请求,否则这将在AWS后端服务器上造成麻烦到第三方服务。