如何在nginx中将客户端的远程地址转发到后端服务器

如何在nginx中将客户端的远程地址转发到后端服务器

我正在使用 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

有人可以帮忙吗?

相关内容