首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flask无法获取远程客户端的真实ip

flask无法获取远程客户端的真实ip
EN

Stack Overflow用户
提问于 2019-01-27 14:50:47
回答 1查看 1.9K关注 0票数 1

我只是在运行一个flask应用程序,而不是使用nginx和uwsgi,是的,我的主机是负载均衡器的幕后黑手。

我正在尝试读取可以读取IP地址的所有密钥,但我无法获得客户端的实际IP。

X-Real-IP在每次请求时都会改变,并且X-Forwarded-For只有一个IP地址,即负载均衡器IP。

瓶子也有同样的问题。当我直接启动python app.py应用程序时,我无法获得真实的IP地址。示例应用必须使用uwsgi和nginx才能读取IP吗?

如果我使用下面的配置并转发uwsgi_param,我可以读取响应中的IP地址列表。

低于wsgi_file.ini

代码语言:javascript
复制
[uwsgi] 
socket = 127.0.0.1:8000
plugin    = python
wsgi-file = app/app.py
process   = 3
callable = app

nginx.conf

代码语言:javascript
复制
server {
        listen 3000;
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;


        location / {
                uwsgi_pass  0.0.0.0:8000; #unix:///tmp/uwsgi.sock;
                include        /etc/nginx/uwsgi_params;
                uwsgi_param X-Real-IP $remote_addr;
                uwsgi_param X-Forwarded-For $proxy_add_x_forwarded_for;
                uwsgi_param X-Forwarded-Proto $http_x_forwarded_proto;
        }
}

我启动了nginx服务器,并使用以下命令运行应用程序: uwsgi --ini wsgi_file.ini。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-03 23:30:06

客户端的IP地址可以通过request.remote_addr在Flask中获取。

请注意,如果您在客户端和服务器之间使用反向代理、负载均衡器或任何其他中介,则这将返回最后一个中介的IP地址,即将请求直接发送到Flask服务器的中介。如果中介包含X-Real-IPX-Forwarded-ForForwarded标头,那么您仍然可以确定客户端的IP地址。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54385763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档