Nginx + Tomcat集群部署时,后端Tomcat需要取得用户的IP,这时通过
request.getRemoteAddr()
取得的始终是 Nginx 所在的内网地址
由于用户请求经过Nginx,Nginx转发了请求到Tomcat后,Tomcat取得的始终是Nginx的Ip。
如果需要取得真实用户IP,需要在Nginx上做些配置。
location / 下设置
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
重启nginx.
Java代码,从请求头中取得真实IP
request.getHeader("X-Real-IP")

本文介绍如何在Nginx+Tomcat集群部署环境下正确获取客户端的真实IP地址。由于请求首先经过Nginx负载均衡器再转发至Tomcat,直接使用request.getRemoteAddr()将返回Nginx的地址而非用户真实IP。文章提供了Nginx的配置方法及Java代码示例。
3135

被折叠的 条评论
为什么被折叠?



