Nginx使用$remote_addr获取用户真实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;
}

 

注释

$remote_addr 获取到上一级代理的IP

proxy_add_x_forwarded_for 获取到结果例如:(x.x.x.x, x.x.x.x),第一个是用户的真实IP,第二个是一级代理的IP,依此类推。

Nginx多级代理配置

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;
}

使用正则匹配获取第一个即可。