nginx 如何获取用户的真实IP 之realip模块
如果访问的服务器有CDN,那么CDN会获取到用户的真实IP,将用户的真实IP封装到X-Forwarded-For中,在设置到X-Real-IP中
X_Forwarded_For:根据访问顺序,依次添加IP地址,也就是记录代理信息
X_Real_IP:一般只记录真实发出请求的客户端IP
X_Forwarded_For会覆盖binary_remote_addr
X_Real_IP 会覆盖remote_addr
这样limit_conn模块才会发挥作用
此处使用到realip模块
realip模块
默认不会被编译进nginx
需要通过--with-http_realip_module来启用该功能
功能:修改客户端地址
变量(新生成两个变量):
realip_remote_addr
realip_remote_port
三个指令:
1.set_real_ip_from address 处理内网传来的ip
默认:空
放置位置:http,server,location
2.real_ip_header field |X-Real-IP| X-Forwarded-For | proxy-protocol | (如果从X-Forwarded-For中取,取最后一个)
默认:X-Real-IP,real_ip_header
放置位置:http,server,location
3.real_ip_recursive on | off
默认: off
放置位置:http,server,location