用户请求 nginx 常见的几种途径
第一种情况:用户 --> SLB(4 层 TCP 代理,客户端 IP 透传了)--> nginx(7层代理,收集分析客户端IP)
第二种情况:用户 --> WAF(CNAME的形式) --> SLB(4 层 TCP 代理,客户端 IP 透传了)--> nginx(7层代理,收集分析客户端IP)
第三种情况:用户 --> CDN --> SLB(4 层 TCP 代理,客户端 IP 透传了)--> nginx(7层代理,收集分析客户端IP)
第四种情况:用户 --> CDN --> WAF(CNAME的形式)--> SLB(4 层 TCP 代理,客户端 IP 透传了)--> nginx(7层代理,收集分析客户端IP)
第五种情况:用户 --> CDN --> WAF(CNAME的形式)--> SLB(4 层 TCP 代理,客户端 IP 透传了)--> nginx(7层代理,收集分析客户端IP) --> nginx(7层代理,收集分析客户端IP)
所以要记录用户端的真实 IP ,要排除掉 CDN IP、WAF IP、上一层的 7 层代理 IP
nginx 配置,参考 http://nginx.org/en/docs/http/ngx_http_realip_module.html:
# WAF IP
set_real_ip_from 120.76.16.0/24;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
针对上面说的 第二种情况
,配置了 ngx_http_realip_module 后, 结果如下
备注:
CDN 回源 IP 不一定获取的到:
https://help.aliyun.com/knowledge_detail/40205.htmlWAF 回源 IP 可以获取到
上一层的 7 层代理 IP 可以获取到