天天看点

获取客户端用户真实 IP 地址

现在需要获取请求到服务器的客户端 IP,一般有这些方式。

  • remote_addr:TCP 底层的会话 IP 地址,socket 连接的 IP 地址,不可伪造。但经过 Nginx 代理时会重置为 Nginx 的 IP,因为 Nginx 重新发起了和服务器的 TCP 连接。
  • X-Real-IP:Nginx 中可以配置,将上一级的 remote_addr 设置为 X-Real-IP。
  • X-Forwarded-For:记录完整的代理链路,可以伪造。

可以看出为了兼容有 Nginx 代理的场景,使用 X-Forwarded-For 方式是做好的。这种方式也需要在 Nginx 中进行配置。

Nginx 配置

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           

参考

从限流谈到伪造 IP

获取用户 IP 指引

获取用户 IP 的正确姿势

Nginx 四层、七层负载均衡的区别

ip-transparency-direct-server-return-nginx-plus-transparent-proxy

版权声明:本文为CSDN博主「weixin_34416754」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_34416754/article/details/91607686

继续阅读