如何在 AWS Elastic Beanstalk 应用程序负载均衡器上运行的 Spring webapp 上获取请求者 IP

Posted

技术标签:

【中文标题】如何在 AWS Elastic Beanstalk 应用程序负载均衡器上运行的 Spring webapp 上获取请求者 IP【英文标题】:How to get thei requester IP on a Spring webapp running on AWS ElasticBeastalk Application Load Balancer 【发布时间】:2020-03-28 05:47:21 【问题描述】:

我有一个使用 Spring 作为后端框架用 Java 编写的 Web 应用程序。 此应用程序在带有应用程序负载均衡器的 AWS ElasticBeanstalk 上运行。我想知道如何获取所有向我的网络应用发送请求的用户的 IP。

[编辑 1] 我注意到,只要这样做,我就可以正确获取我的 IP 地址。

@GetMapping
public String processData(HttpServletRequest request) 

    String ipAddress = request.getRemoteAddr());


我不知道是否有特殊情况下这不起作用。

【问题讨论】:

【参考方案1】:

您可以在 ALB 上启用访问日志,这将记录对 ALB 的所有请求。记录信息:(https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html) 如果您有一些合规性要求,请不要忘记相应地轮换日志(s3 生命周期)。

【讨论】:

非常感谢您的帮助。但是我怎么能使用这个日志呢?我想存储页面访问并使用它们...如何使用您给我的解决方案来做到这一点?【参考方案2】:

request.getRemoteAddr(); 总结得差不多了。您也可以对端口和其他属性执行相同操作。

【讨论】:

以上是关于如何在 AWS Elastic Beanstalk 应用程序负载均衡器上运行的 Spring webapp 上获取请求者 IP的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS Elastic Beanstalk 上修改 Nginx 配置

如何在 AWS Elastic Beanstalk 上设置 HTTPS

如何在 AWS Elastic Beanstalk 上设置 HTTPS

如何在 AWS Elastic Beanstalk 中更改数据库配置

如何在 AWS Elastic Beanstalk 中选择特定平台?

如何使用 Elastic beanstalk 和 Dockerrun.aws.json 正确部署到 AWS?