I am trying to config a reverse proxy server to call a third party, our access is limited to special Ip but when I call the proxy server the server pass client Ip to third party server.
I tried to fetch Ip addresses with a spring application and I got that spring getRemoteAddr
is using something else than X-Forwarded-For
.
I am looking for a way to get manipulated Ip in HttpServletRequest.getRemoteAddr()
Nginx config:
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;
}
}
Spring Controller:
@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");
}
}
Result
getRemoteAddr: 192.168.99.219 //expected 192.168.1.1
getRemoteHost: 192.168.99.219
X-Forwarded-For: 192.168.1.1