Spring boot 从反向代理隐藏客户端Ip
我试图配置一个反向代理服务器来调用第三方,我们的访问权限仅限于特殊Ip,但当我调用代理服务器时,服务器会将客户端Ip传递给第三方服务器 我试图用spring应用程序获取Ip地址,结果发现springSpring 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 / {
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。