获取客户端用户真实 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

转载于:https://my.oschina.net/lvyi/blog/3045507

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值