如何允许远程连接到 Flask?

Ily*_*gin 37 firewall networking

在系统内部,在虚拟机上运行,​​我可以在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
Run Code Online (Sandbox Code Playgroud)

ufw 处于非活动状态。

我该如何解决这个问题?

Mar*_*ski 58

首先 -通过检查以下输出,确保您的 HTTP 服务器正在侦听 192.168.50.101:5000或无处不在 ( 0.0.0.0:5000):

netstat -tupln | grep ':5000'
Run Code Online (Sandbox Code Playgroud)

如果不是,请查阅Flask 的文档以绑定到 localhost 以外的地址。

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

iptables -I INPUT -p tcp --dport 5000 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

来自 Flask 的文档:

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

如果您已禁用调试或信任网络上的用户,则只需将run()方法调用更改为如下所示,即可使服务器公开可用 :

app.run(host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)

  • 在这里创建一个帐户只是为了收藏这个问题并为这个答案点赞! (2认同)
  • 对于那些想要直接访问文档而不是浏览大量文档的人:http://flask.pocoo.org/docs/0.11/quickstart/#public-server (2认同)

Has*_*aan 6

最好的方法

flask run --host=0.0.0.0
Run Code Online (Sandbox Code Playgroud)


小智 5

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

 app.run(debug=True,host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)

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