我正在使用 Nginx 作为我的 Web 应用程序的负载均衡器。
我的请求流程将是这样的:用户--> Nginx(后端)--> Nginx(前端)--> Tomcat 服务器。
我尝试在 Java 应用程序中使用“request.getRemoteAddr()”获取客户端 IP 地址。但是我获取的是前端 Nginx IP 作为远程地址。
我尝试了真实 IP 解决方案和标头覆盖,但似乎都不起作用。
我的 Nginx 配置:
set_real_ip_from 10.44.0.0;
real_ip_header CLIENT-REAL-IP;
upstream backend {
server xxxxxx:port;
server yyyyyy:port;
}
server {
listen 80;
listen 443;
server_name xxxxxx;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_read_timeout 100;
}
}
后端 Nginx 将自定义标头中的客户端 IP - CLIENT-REAL-IP 传递给前端 Nginx。我可以在前端 Nginx 日志中看到 CLIENT-REAL-IP 地址。
我可以在其他自定义标头中设置客户端 IP,并在我的 Java 应用程序中访问它。
但我希望在 remote_addr 中使用正确的客户端 IP。
根据我的理解,提到的 real_ip_header 应该设置为 remote_address。
Nginx 版本:nginx/1.18.0
有人可以帮忙吗?