多级反向代理抓出真实ip
-
如果自己这一级nginx的上面,
- 还有一个nginx反向代理,且其ip为23.23.23.23
- 那我们用
$remote_addr获取到的都是这个ip,这是不对的 - 必须要还原出用户的真实ip
server { #ssl相关 set_real_ip_from 23.23.23.23; real_ip_header X-Forwarded-For; localtion / { } }- 相当于告诉nginx,
23.23.23.23是我们上一级反代,别直接当成用户了,你要去X-Forwarded-For里面往前找
- 相当于告诉nginx,
-
如果自己这一级nginx的上面,
- 还有两级nginx反向代理,ip分别为
- 23.23.23.23(最近的)
- 12.12.12.12(较远的)
- 如果这两级是平级的,不分远近,也是这样设置
- 必须要还原出用户的真实ip
server { #ssl相关 set_real_ip_from 23.23.23.23; set_real_ip_from 12.12.12.12; real_ip_header X-Forwarded-For; real_ip_recursive on; localtion / { } }- 先写最近的,再写较远的
- 还要开启
real_ip_recursive,表示多级追溯 - 相当于告诉nginx,
23.23.23.23是我们上一级反代,12.12.12.12更是我们上上级反代,别直接当成用户了,你要去X-Forwarded-For里面找到最后一个不是反代的IP,这才是真实用户ip
- 还有两级nginx反向代理,ip分别为
-
经过上面的折腾,后面的变量
$remote_addr,表示的就是真实用户ip了