美文网首页
nginx配置文件中获取客户端真实IP的方法

nginx配置文件中获取客户端真实IP的方法

作者: boldcautious | 来源:发表于2018-12-12 14:18 被阅读10次

如果X-Forwarded-For(XFF)中保存了客户端IP则从XFF中获取,如果XFF为空则直接利用$remote_addr获取和nginx直连的机器的IP作为客户端IP。
详细代码如下

    server {
        listen       80;
        server_name  localhost;

        set $real_client $remote_addr;
        #不考虑伪造XFF及XFF格式不正确的情况
        if ($http_x_forwarded_for ~ "^(\d+)\.(\d+)\.(\d+).(\d+)") {
            set $real_client $1.$2.$3.$4;
        }

        location / {
            #just for test
            echo "real_client=$real_client";
        }
    }

注:这里假定XFF如果不为空,即认为XFF格式是正确的,包含了客户端IP。
如果要用正则表达式匹配正确的IP格式,正则表达式会很复杂,而且也不能解决XFF伪造的问题。

相关文章

网友评论

      本文标题:nginx配置文件中获取客户端真实IP的方法

      本文链接:https://www.haomeiwen.com/subject/pdouhqtx.html