求教下如果用两台nginx如何取到真实IP?

rock_turf 发布于 2016/05/24 09:22
阅读 409
收藏 0

后端的真实服务器是nginx,如果只有一台nginx就很简单,nginx的配置文件里配置

proxy_set_header X-real-ip $remote_addr;

前面java代码里取出

String ip = request.getHeader("X-Real-IP");就行了

但现在是两个nginx,也就是第一个nginx启动是指向第二个nginx的,这样取出来的值无法传递到第二个nginx,造成取不到ip的情况。

这个问题如何解决?

加载中
2
南湖船老大
南湖船老大

你少东西了。

使用了负载均衡后后端获取真实 IP

负载均衡器配置:
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://varnish;
}
后端真实服务器配置:
location / {
root html;
index index.html index.htm;
set_real_ip_from 10.10.10.122;
real_ip_header X-Real-IP;
}
增加这 2 行配置
set_real_ip_from 10.10.10.122; 告诉 nginx 从那边(负载均衡器)获取 RealIP 的值
real_ip_header X-Real-IP; 存储 RealIP 值的变量名称
这样代码里和 nginx 日志里就都是用户真实 IP 了。
0
leo108
leo108
用XFF而不是X-Real-IP
0
rock_turf
rock_turf

引用来自“leo108”的评论

用XFF而不是X-Real-IP

两个nginx均设置为

proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;

但取出来的XFF是127.0.0.1,不是想要的真实IP....

返回顶部
顶部