文章目录
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 版权协议,转载请附上原文出处链接和本声明。