咸鱼

咸鱼是以盐腌渍后,晒干的鱼

0%

nginx反向代理保留远程IP

如果使用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
// HttpServletRequest

//这里其实是nginx的IP,则本地。
String nginxIP = request.getRemoteAddr();

//自己设置的自定义Header,为请求clicent端的IP。
String clientIP = request.getHeader("X-Real-IP");