【发布时间】:2016-11-02 09:40:35
【问题描述】:
我需要记录我使用 Python 和 Flask 创建的 web 应用的每个用户的 IP 地址。
我正在使用
request.remote_addr
但这会返回应用程序部署到的服务器的 IP 地址。有什么解决办法吗?
【问题讨论】:
我需要记录我使用 Python 和 Flask 创建的 web 应用的每个用户的 IP 地址。
我正在使用
request.remote_addr
但这会返回应用程序部署到的服务器的 IP 地址。有什么解决办法吗?
【问题讨论】:
你如何部署烧瓶应用程序?
我猜你是通过像 nginx 这样的反向代理服务器来部署你的应用程序的,对吧?
如果您这样做了,那么request.remote_addr 就是您的服务器地址,因为您的服务器将客户端的请求发送到您的应用程序并将响应发送到客户端。
要解决此问题,请参阅:http://flask.pocoo.org/docs/0.11/deploying/wsgi-standalone/#proxy-setups
【讨论】:
request.headers.get('X-Forwarded-For', request.remote_addr)很适合我的需求
获取用户(也称为客户端)IP的最简单方法是将其设置为变量或直接使用它。
request.environ['REMOTE_ADDR']
要获取服务器的 IP:
request.remote_addr
【讨论】:
request.environ['REMOTE_ADDR'] 和 request.remote_addr 是同一件事(并没有解决 OP 询问的问题。)