Spring boot 从反向代理隐藏客户端Ip

Spring boot 从反向代理隐藏客户端Ip,spring-boot,nginx,nginx-reverse-proxy,Spring Boot,Nginx,Nginx Reverse Proxy,我试图配置一个反向代理服务器来调用第三方,我们的访问权限仅限于特殊Ip,但当我调用代理服务器时,服务器会将客户端Ip传递给第三方服务器 我试图用spring应用程序获取Ip地址,结果发现springgetRemoteAddr使用的不是X-Forwarded-For 我正在寻找一种在HttpServletRequest.getRemoteAddr() Nginx配置: server { listen 80; server_name _; location / {

我试图配置一个反向代理服务器来调用第三方,我们的访问权限仅限于特殊Ip,但当我调用代理服务器时,服务器会将客户端Ip传递给第三方服务器

我试图用spring应用程序获取Ip地址,结果发现spring
getRemoteAddr
使用的不是
X-Forwarded-For

我正在寻找一种在
HttpServletRequest.getRemoteAddr()

Nginx配置:

server {
    listen      80;
    server_name _;

    location / {
        real_ip_header X-Forwarded-For;
        proxy_set_header  X-Forwarded-For '192.168.1.1';   
        proxy_set_header X-Real-IP '192.168.1.1'; 
        proxy_pass http://192.168.30.31:8080;
    }

}
弹簧控制器:

@RestController
public class TestController {

    @RequestMapping("/")
    public String getIp(HttpServletRequest request) {
        return "getRemoteAddr: " + request.getRemoteAddr() +
                "\ngetRemoteHost: " + request.getRemoteHost() +
                "\nX-Forwarded-For: " + request.getHeader("X-Forwarded-For");
    }

}
结果

getRemoteAddr: 192.168.99.219 //expected 192.168.1.1
getRemoteHost: 192.168.99.219
X-Forwarded-For: 192.168.1.1

嘿@Mojtabye,我在使用Java或Spring方面没有任何经验。但我在谷歌上搜索了一下,发现您可能需要操作一些其他http头以及
X-Forwarded-For
。检查这些线程,看看是否可以找到答案:,@nima谢谢,问题是服务器端应用程序是第三方,我无法更改它!据我了解,您目前正在手动设置
nginx
中的
X-Forwarder-For
标题。我建议您对其他头执行相同的操作,例如
代理客户端IP
HTTP\u Client\u IP
HTTP\u X\u FORWARDED\u for
。因为
request.getRemoteAddr()
可能正在使用其中一个来检索客户端的IP。