三个方法透过Nginx代理获取客户端真实IP

  • 发表于
  • 周边

当经过N个nginx代理时,Server端如何拿到Client端端真实IP

三个方法透过Nginx代理获取客户端真实IP

使用X-Forwarded-For + realip模块

使用realip模块可以解决该问题。

查看nginx的编译参数:nginx -V(默认是安装了realip模块的)

配置nginx

使用浏览器正常访问,默认不改变日志格式的情况下,我们来看3台server的日志情况。

这个时候的remote_addr就是用户的真实IP,添加XFF头访问,我们来看3台server的日志情况。

可以看到用户自己配置的XFF头并没有被识别为真实的IP。

使用X-Forwarded-For + 安全设置

在第一个代理处处理用户传递的XFF,达到忽略用户传递的XFF值的效果。

配置nginx

使用浏览器正常访问,默认不改变日志格式的情况下,我们来看3台server的日志情况

这个时候http_x_forwarded_for就是代表用户真实IP,添加XFF头访问,我们来看3台server的日志情况。

使用X-Real-IP

配置nginx

使用浏览器正常访问,我们来看3台server的日志情况

这个时候web_server的http_x_real_ip就是代表用户真实IP,添加XFF头访问,我们来看3台server的日志情况。

与不添加一致。via