应用使用flask框架开发,使用uswgi启动,使用supervisor管理进程,使用nginx代理服务。
flask本身可以通过request.remote_addr
获取用户的ip,但是通过nginx代理之后,获取到的是本地地址或者局域网地址。
为了在nginx代理的环境下获取用户真实ip,可以通过以下做法实现:
nginx 配置
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
ip = request.headers['X-Real-Ip']