隐藏

nginx中获取客户端真实的访问IP

发布:2022/12/12 13:55:27作者:管理员 来源:本站 浏览次数:651

1,必需要先搞清楚的基本概念


1.1   什么是remote_addr

      remote_addr 是服务端根据请求TCP包的ip指定的。假设从client到server中间没有任何代理,那么web服务器(Nginx,Apache等)就会把client的IP设为IPremote_addr;如果存在代理转发HTTP请求,web服务器会把最后一次代理服务器的IP设置为remote_addr。

      没有使用代理服务器的情况:

     REMOTE_ADDR = 您的 IP

        HTTP_VIA = 没数值或不显示

        HTTP_X_FORWARDED_FOR = 没数值或不显示


1.2   什么是x_forwarded_for

      当使用代理时,web服务器无法通过TCP数据包来源获得发起请求的client的真实IP,因此代理服务器通常会在http请求头增加一个叫做x_forwarded_for的字段,用来记录请求发起者的真实IP。


使用透明代理服务器的情况:Transparent Proxies

     REMOTE_ADDR = 最后一个代理服务器 IP

       HTTP_VIA = 代理服务器 IP

        HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.1, 203.98.182.2, 203.129.72.3。

    这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。


2,怎样配置nginx,使之获取到真实的客户端IP


调用这个配置:再server的里面调用这个配置。