如何允许远程连接到 Flask?

如何允许远程连接到 Flask?

在系统内部,在虚拟机上运行,​​我可以访问正在运行的服务器127.0.0.1:5000

尽管虚拟机的“远程”地址是 192.168.56.101(ping 和 ssh 工作正常),但我无法从虚拟机或本地服务器访问 192.168.50.101:5000 的服务器。

我猜想有一些东西阻止了远程连接。

这是 /etc/network/interfaces:

auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0

ufw 处于非活动状态。

我该如何解决这个问题?

答案1

首先, 通过检查输出确保您的 HTTP 服务器正在监听192.168.50.101:5000或任何地方( ):0.0.0.0:5000

netstat -tupln | grep ':5000'

如果不是,请咨询Flask 的文档绑定到本地主机以外的地址。

如果是,则使用 iptables 允许流量:

iptables -I INPUT -p tcp --dport 5000 -j ACCEPT

来自Flask的文档:

外部可见服务器 如果您运行服务器,您会注意到服务器只能从您自己的计算机访问,而不能从网络中的任何其他计算机访问。这是默认设置,因为在调试模式下,应用程序的用户可以在您的计算机上执行任意 Python 代码。

如果您已禁用调试或信任网络上的用户,则可以通过简单地将方法调用更改 run()为如下所示的方式使服务器公开可用:

app.run(host='0.0.0.0')

答案2

最好的方法

flask run --host=0.0.0.0

答案3

我刚刚遇到了同样的问题。为了解决这个问题,我更新了运行应用程序的方式:

 app.run(debug=True,host='0.0.0.0')

使用 host=0.0.0.0 让我通过本地网络访问我的应用程序。

要访问你的 flask 应用程序,你需要做的就是在浏览器中输入:

[your devices ip address]:5000

IE:

192.168.1.255:5000

相关内容