美文网首页
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