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


    date : 2019-06-28 16:54:50

    author: headsen chen

    notice: 个人原创

    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.163, 203.98.182.163, 203.129.72.215。
         这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。

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

     

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

     

    就可以了

  • 相关阅读:
    BZOJ3832: [Poi2014]Rally(拓扑排序 堆)
    UVAlive6807 Túnel de Rata (最小生成树)
    UVAlive6800The Mountain of Gold?(负环)
    cf623A. Graph and String(二分图 构造)
    BZOJ4144: [AMPPZ2014]Petrol(最短路 最小生成树)
    cf605D. Board Game(BFS 树状数组 set)
    为什么要去创业?
    后缀数组练习题若干
    Android开发 之 我的jar包引用方法
    IBM-ETP 实训项目前一天
  • 原文地址:https://www.cnblogs.com/kaishirenshi/p/11103759.html
Copyright © 2020-2023  润新知