CDN 环境下获取用户IP方法

CDN 环境下获取用户IP方法


 

  1. 1 cdn 自定义header头的X-Real-IP,在后端使用$http_x_real_ip获得

    proxy_set_header X-Real-IP $remote_addr

    这种方法简单有效准确.

  2. 2 cdn一般都会使用自定义字段X-Forwarded-For记录代理过程信息

    例如: 假设加上cdn代理在内的所有代理后的$http_x_forwarded_for为:

    192.168.247.1, 192.168.247.131, 192.168.247.132,192.168.96.111

    我们可以拿到第一个IP即可(这里不考虑IP伪造的情况)

  3. 3 使用nginx自带模块realip获取用户IP地址

    如果nginx是通过源码包安装的,在编译时需要加上

    --with-http_realip_module

    在最后一台代理服务器(nginx)做如下设置:

    real_ip_header "X-Forwarded-For"; 设定获取ip地址串的字段

    real_ip_recursive on; 递归check地址串

    set_real_ip_from 192.168.247.131; 在check地址串的过程中pass掉它

    set_real_ip_from 192.168.247.132; 在check地址串的过程中pass掉它

    set_real_ip_from 192.168.96.111; 在check地址串的过程中pass掉它

    这个例子中只有192.168.247.1没有在set_real_ip_from中那我们就默认它是用户IP

    缺点:ip地址有可能被伪装,而且需要知道所有CDN(代理)节点的ip地址或者ip段

posted @ 2017-05-25 17:21  weelin_area  阅读(942)  评论(0编辑  收藏  举报