post_read 阶段
获取真实的用户IP地址
- tcp 四元组(src_ip, src_port, dst_ip, dst_port)
- http 头部
X-Forwarded-For
用于传递IP; - http 头部
X-Real-IP
用于传递用户ip; - 网络中存在许多反向代理;
- 用户 --(内外ip:a)–> ADSL --(运营商公网ip:b)–>CDN --(ip:c; X-Forwarded-For:b; X-Real-IP:b[cdn 会在http头上加上这些信息])–>某反向代理d --(ip:d; X-Forwarded-For:b,c; X-Real-IP:b)–> Nginx : 获取到 用户地址-b, remote_addr=d(某反向代理d的地址)
基于变量使用用户ip
binary_remote_addr
,remote_addr
; 其值就是用户的公网ip, 可以用来做连接限制(limit_conn 模块);
realip 模块
- 功能: 修改客户端地址
- 编译: 默认不会编译进Nginx: 需要通过
--with-http_realip_module
启用功能; - 变量:
realip_remote_addr
,realip_remote_port
; - 指令:
set_real_ip_from
,real_ip_header
,real_ip_recursive
<