我在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中?
非常感谢关于从哪里开始的一些指示!
答案 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 For
和real_ip_recursive: on
。这意味着nginx将扫描您正在接收的IP列表,并将客户端设置为第一个不受信任的IP。您还需要传递一个可信IP列表,它应该是负载均衡器的CIDR块。
有更详细的说明和答案here