1

我们在 AWS App Mesh 中部署了多个微服务。所有服务都在 Spring Boot 中开发并部署在 AWS fargate 中。

我需要找到调用 API 的服务 IP/域。在 Java 中,这可以通过在收到请求时调用 getRemoteHost() 或 getRemoteAddr() 来完成。但目前,两个调用都返回 127.0.0.1。

可能是因为随服务一起部署的特使代理?如何在应用网格中部署的服务中获取调用方 IP?

4

2 回答 2

0

根据这张图片,App Mesh 前面似乎有一个负载均衡器,流量被路由到虚拟网关,最后到各个客户端。

在此处输入图像描述

这应该意味着简单地X-Forwarded-For从传入的 HTTP 请求中获取标头的值就足以检索客户端的 IP 地址。你可以在这里阅读更多内容。

于 2021-10-06T07:15:26.240 回答
0

X-Forwarded-For您使用 HTTP 或 HTTPS 负载均衡器时,请求标头会自动添加并帮助您识别客户端的 IP 地址。在 AWS 文档中,X-Forwarded-For请求标头可能包含多个以逗号分隔的 IP 地址。最左边的地址是第一次发出请求的客户端 IP。您需要在 Spring Boot 应用程序获取的请求中检查它。

于 2021-10-06T08:11:47.520 回答