深入nginx之《获取用户的真实IP》

深入nginx之《获取用户的真实IP》

原创: lee 川西阳光里 今天

获取用户的真实IP

        Nginx会将客户端的IP信息存放在$remote_addr变量里,但这并不意味着它就是客户端的IP,生产环境往往会充满各种代理,让IP的来龙去脉变得扑朔迷离。

        目前互联网公司基本上都采用这种架构方式

        用户的请求并不是直接和Nginx交互,而是通过了CDN加速平台。默认情况下,Nginx看到的$remote_addr是CDN的IP,这对日志的记录和分析,还有后端的业务逻辑都可能产生不良的影响,如果需要获取到用户的真实IP呢,这个时候realip模块就起到了作用。

        此模块需要编译时开启:

        --with-http_realip_module

        在Nginx的HTTP块里面配置:

        set_real_ip_from CDN_IP;

        real_ip_header X-Forwarded-For;

        real_ip_recursive on;

   

     set_real_ip_from

        设置哪些IP是可信任的,从这些IP进行获取请求头信息,这些IP就配置为CDN的IP白名单。

 

    real_ip_header

        定义从哪个请求头获取IP信息,其值将用于替换客户端地址。一般都使用X-Forwarded-For。

 

    real_ip_recursive

        如果启用递归搜索,将会对可信任的IP匹配,原始客户端地址将替换为在请求头域中发送的最后一个不可信地址。如果禁用递归搜索,则从白名单中由real_ip_header指令定义的请求头中的最后一个地址替换。

 

        通过此方式就可以获取到CDN传递给Nginx的用户的IP。那么问题来了,$remote_addr被替换成了用户的IP,有些时候我们也希望获取到CDN 的节点IP,这对于排查一些和CDN有关的问题是由帮助的。可以使用$realip_remote_addr,它可以保留原始客户端地址。 (1.9.7版本新增的变量)


 

Pingbacks已打开。

Trackbacks

引用地址

评论
  1. ErnestVoics ErnestVoics 发布于 2020年10月28日 11:43 #

    canadian online pharmacy viagra <a href=" http://sild100fast.com/# ">viagra for sale</a> cheap viagra online canadian pharmacy
    ed drugs online from canada http://sild100fast.com viagra pill
    generic for viagra <a href=http://sild100fast.com/#>buy viagra online</a> best place to buy viagra online

  2. wry84k wry84k 发布于 2020年10月28日 13:58 #

    where can you get arthritis describe allergies
    https://levitrahill.com/# levitra online

  3. Justinfancy Justinfancy 发布于 2020年10月28日 16:29 #

    cheapest generic viagra <a href=" http://sild100fast.com/# ">buy viagra</a> when will viagra be generic
    best ed medication http://sild100fast.com walmart viagra

  4. JaneGal JaneGal 发布于 2020年10月28日 17:28 #

    <a href="https://novemeds.com/">plavix 75 mg pill</a>

  5. JaneGal JaneGal 发布于 2020年10月28日 17:54 #

    <a href="https://zofranp.com/">zofran tablet price in india</a>

  6. EvaGal EvaGal 发布于 2020年10月28日 18:50 #

    <a href="http://cialistp.com/">cialis generic 10 mg</a>

发表评论