0
我有春天启动的基于微服务环境设置与此配置 -Tomcat的Zuul代理服务器不转发正确的客户端IP地址(request.getRemoteAddr())结束的microService
- 作为nginx的负载平衡器(配置为使用x-forwarded-for)
- 基于netflix zuul代理服务器的Spring Boot Powered API Gateway。 Tomcat是嵌入式容器。
- 基于Spring Cloud的产品微服务。 Tomcat作为嵌入式容器。
春天引导版本:1.5.6
当最终用户正在通话产品的microService,它经历的Nginx - > API网关 - >产品服务。
现在问题出现时,我想获得产品Microservice中的远程客户端IP地址。我总是得到127.0.0.1作为IP地址。这是在产品的microService是获取客户端IP
private String getClientIP() {
String xfHeader = request.getRemoteAddr();
if (StringUtils.isBlank(xfHeader) || xfHeader.equals("127.0.0.1")) {
return request.getHeader("X-Forwarded-For");
}
return xfHeader.split(",")[0];
}
API网关application.properties配置为使用server.use-forward-headers: true
P.S.代码 当我尝试从tomcat切换到在我的api-gateway中时,然后我开始获取产品microservice中的真实客户端IP地址。所以问题出在我的Tomcat配置中的API网关。