flask获取真正的ip

  • Post author:
  • Post category:其他




0 背景

  • 使用ngnix反向代理, 部署flask项目时, 不能获取到真正的客户ip地址.



1 代理



1.1 正向代理

  • 正向代理的代理对象是客户端.
  • 客户端不能直接访问服务端,然后客户端将请求全部发给中介,由中介去访问服务端,然后中间将返回结果发给客户端.服务端只知道中介, 而不知道真正的客户端.



1.2 反向代理

  • 反向代理的代理对象是服务端.
  • 服务端不直接对外开放, 而是通过一个中介, 对外开放服务. 客户端只知道中介, 而不知到是谁给他提供真正的服务.



2 解决办法



2.1 在nginx配置中添加

X-Forwarded-For

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  



2.2 在项目中添加如下代码

from flask import request

def get_ipaddr():
    if request.access_route:
        return request.access_route[0]
    else:
        return request.remote_addr or '127.0.0.1'



版权声明:本文为baidu_33387365原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。