通过Nginx的反向代理实现获取客户的真实IP

本文介绍了如何在Nginx中通过反向代理获取客户端的真实IP。讲解了remote_addr、X-Forwarded-For和X-Real-IP等变量的作用,并详细说明了使用realip_module模块设置real_ip_header和set_real_ip_from来排除代理IP,确保获取最原始的用户IP。通过在实验环境中配置和测试,验证了方法的有效性。
摘要由CSDN通过智能技术生成

1.背景

目前我们访问互联网时,在多数情况下,不是直接访问服务器的,而且先将请求发送到反向代理服务器
反向代理通过实现路由/负载均衡的策略,再将请求转发至服务器
这样服务端拿到的IP将是反向代理的IP

在一些特殊场景下,比如风控和支付流程,往往需要获取用户的ip信息,但是nginx的反向代理实现跨域的同时
也彻底改变了服务器的请求来源,隔离了用户和服务器的连接这并不是我们想要的,因此对于客户端ip的解析是必要的

2.nginx中相关变量的介绍

  • remote_addr
    代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的
    当你的浏览器访问某个网站时,假设中间没有任何代理,那么网站的web服务器(Nginx,Apache等)
    就会把remote_addr设为你的机器IP,如果你用了某个代理,那么你的浏览器会先访问这个代理,然后再由这个代理转发到网站
    这样web服务器就会把remote_addr设为这台代理机器的IP,除非代理将你的IP附在请求header中一起转交给web服务器
  • X-Forwarded-For(简称XFF)
    X-Forwarded-For 是一个 HTTP 扩展头部,HTTP协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入
    用来表示 HTTP 请求端真实 IP,如今它已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用
    并被写入 RFC 7239&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值