原始IP未传递到AWS Elastic Beanstalk上的单个容器Docker镜像上的容器

时间:2017-07-27 22:05:54

标签: node.js amazon-web-services docker elastic-beanstalk ip-address

我在AWS Elastic Beanstalk上的Docker容器中有一个Node.js服务器。我注意到,如果我尝试通过请求标头访问用户的IP地址,我不会得到用户的实际远程IP地址。相反,我得到了似乎是Docker容器的IP地址 - 172.19.0.1

我确信有一些关于如何配置Docker或Elastic Beanstalk的简单方法,我需要更改以获得所需的行为 - 但我不知道需要更改什么。

我的Dockerfile中有什么东西? 在推送& amp;之前,我的docker build命令中有一个标志或某物部署我的容器? AWS中的一些配置在ELB或Elastic Beanstalk中?

非常感谢关于从哪里开始的一些指示!

2 个答案:

答案 0 :(得分:2)

使用Hapi for Node.js,请求标头不适用于request.info,而是request.headers。使用request.info返回网络级信息。您应该使用类似request.headers[ 'X-Forwarded-For' ]的内容来获取请求级别信息。尝试显示request.headers键值对,以发现链接到包含您要查找的IP地址的值的键。

答案 1 :(得分:1)

Alexandre Fenyo已经触及了这个问题,但如果您支持负载均衡器,那么这可能就是作为客户端IP传递给您的应用程序。

您可以配置nginx以设置real_ip_header: X-Forwarded Forreal_ip_recursive: on。这意味着nginx将扫描您正在接收的IP列表,并将客户端设置为第一个不受信任的IP。您还需要传递一个可信IP列表,它应该是负载均衡器的CIDR块。

有更详细的说明和答案here