代理nginx后面的Jhipster存储本地服务器ip而不是审计表中的请求IP

问题描述 投票:0回答:1

我在NGINX代理后面设置了一个带有JHipster 4.10.2的tomcat,一切运行良好,但是当我转到Audit视图以显示已登录的用户时...存储的IP始终是服务器IP。有时,存储的IP地址是本地主机IP地址127.0.0.1,其他时间是服务器的公共IP,而不是登录到应用程序的客户端/用户IP。

我测试了java代码以获取请求中的IP地址:

request.getHeader("X-FORWARDED-FOR")

这样我就可以获得正确的IP地址(来自拨打电话的用户的真实IP地址)但是我不会使用这种方式来修改或扩展以获取IP地址。

我在application.yml和application-prod.yml上使用use-forward-headers标志为true

server.use-forward-headers = true

nginx配置:

location /myapp {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-NginX-Proxy true;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://localhost:8080/myapp;
    index  index.html index.htm;
}
java spring-boot nginx spring-security jhipster
1个回答
0
投票

请尝试$ http_x_real_ip,我从https://easyengine.io/tutorials/nginx/forwarding-visitors-real-ip得到了答案

proxy_set_header X-Forwarded-For $http_x_real_ip;
© www.soinside.com 2019 - 2024. All rights reserved.