flask+nginx获取用户真实ip

原文:https://blog.csdn.net/xwd127429/article/details/105932045
应用使用flask框架开发,使用uswgi启动,使用supervisor管理进程,使用nginx代理服务。

flask本身可以通过request.remote_addr获取用户的ip,但是通过nginx代理之后,获取到的是本地地址或者局域网地址。

为了在nginx代理的环境下获取用户真实ip,可以通过以下做法实现:

nginx 配置

1
2
3
4
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

flask 获取用户真实ip

1
ip = request.headers['X-Real-Ip']