如果使用Nginx做反向代理到本地的SpringBoot服务,那么SpringBoot服务获取的远程 地址IP是nginx的,如何获取客户端的IP呢?
有一简单的方法是通过设置一个自定义Header来实现。
1 2 3 4 5 6 7 8 9 10 11 12
| server { listen 80; server_name 127.0.0.1:80; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8282/api/; } }
|
SpringBoot内获取客户端的真实IP
1 2 3 4 5 6 7
|
String nginxIP = request.getRemoteAddr();
String clientIP = request.getHeader("X-Real-IP");
|