zoukankan      html  css  js  c++  java
  • 通过Nginx获取用户真实IP

    nginx配置

    location / {
        proxy_set_header            Host $host;
        proxy_set_header            X-real-ip $remote_addr;
        proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    如上面配置,接口需要使用的时候获取X-real-ip就可以,但是经过测试以后,发现X-real-ip并不是真实的用户IP,而是Nginx代理服务器的IP,原因就是经过多级代理,$remote_addr是上一级的IP。

    名词解释

    • $remote_addr
      获取到上一级代理的IP
    • proxy_add_x_forwarded_for
    • 获取到结果例如:(223.104.6.125, 10.10.10.45),第一个是用户的真实IP,第二个是一级代理的IP,依此类

    通过上面的分析我们可以从proxy_add_x_forwarded_for中获取到用户的真实IP,使用正则匹配获取第一个即可,如下:

    location / {
        proxy_set_header            Host $host;
        set $Real $proxy_add_x_forwarded_for;
        if ( $Real ~ (d+).(d+).(d+).(d+),(.*) ){
            set $Real $1.$2.$3.$4;
        }
        proxy_set_header            X-real-ip $Real;
        proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    也可以通过后台的程序,从请求的header里获取X-Forwarded-For,然后取起一个值即可

    嗯,就酱~~

    参考:https://blog.csdn.net/qq_28796345/article/details/88685245

  • 相关阅读:
    Python
    Python
    Jmeter 学习路线
    Git 学习路线
    数据库学习路线
    Linux 学习路线
    Gitlab(2)- centos7.x 下安装社区版 Gitlab 以及它的配置管理
    云原生学习路线(仅供参考)
    Python
    Python
  • 原文地址:https://www.cnblogs.com/jin-zhe/p/11989012.html
Copyright © 2011-2022 走看看