将 Flask 开发服务器配置为在整个网络中可见

新手上路,请多包涵

我不确定这是否是 Flask 特定的,但是当我在开发模式下运行应用程序时( http://localhost:5000 ),我无法从网络上的其他机器访问它(使用 http://[dev-host-ip]:5000 ) .例如,在开发模式下使用 Rails,它可以正常工作。我找不到任何有关 Flask 开发服务器配置的文档。知道应该配置什么来启用它吗?

原文由 sa125 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 935
2 个回答

虽然这是可能的,但您不应在生产中使用 Flask 开发服务器。 Flask 开发服务器的设计并不是特别安全、稳定或高效。请参阅有关 部署 的文档以获取正确的解决方案。


--host 选项 flask run ,或 host 参数 app.run() 控制开发服务器监听的地址。默认情况下,它在 localhost 上运行,将其更改为 flask run --host=0.0.0.0 (或 app.run(host="0.0.0.0") )以在所有机器的 IP 地址上运行。

0.0.0.0 是一个特殊值,您不能直接在浏览器中使用,您需要导航到网络上机器的实际 IP 地址。您可能还需要调整防火墙以允许外部访问端口。

Flask 快速入门文档 在“外部可见服务器”部分对此进行了解释:

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

如果您禁用了调试器或信任网络上的用户,您只需在命令行中添加 --host=0.0.0.0 即可使服务器公开可用:

 $ flask run --host=0.0.0.0

这告诉您的操作系统侦听所有公共 IP。

原文由 Shawn Swaner 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您使用 flask 可执行文件来启动您的服务器,请使用 flask run --host=0.0.0.0 将默认值从 127.0.0.1 更改为非本地连接并将其打开。

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

如果您禁用了调试器或信任您网络上的用户,则只需在命令行中添加 --host=0.0.0.0 即可使服务器公开可用:

 $ flask run --host=0.0.0.0

这告诉您的操作系统监听所有公共 IP。

参考: https ://flask.palletsprojects.com/quickstart/

原文由 Aria 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题