无法从主机访问 Virtual Box 上的服务器?

无法从主机访问 Virtual Box 上的服务器?

我在 MacOS 上的 Virtual Box 中运行 Ubuntu 18.04.1。我localhost在 Ubuntu 中使用 Python Flask 设置了一个服务器,http://127.0.0.1:5000/我试图从我的 Mac 访问这个本地主机,但无法访问。我为虚拟盒使用了 Bridge 类型的连接,这样我的 Mac 和虚拟盒都可以有 IP 地址。这是我的虚拟盒网络设置的图片:

Virtual Box 网络设置

Ubuntu 地址是192.168.1.169。当我输入时,192.168.1.169:5000我无法获得任何内容,它永远不会结束加载。我还尝试打开 Ubuntu 防火墙以端口5000。没有运气。为什么会这样?

答案1

我不熟悉 Python Flask,但话虽如此,如果你运行服务器,127.0.0.1你只是将其限制在localhost而已。这不是 Python Flask 特定的概念,而是一个通用的网络概念。

对于服务器上运行的大多数应用程序来说,为了使该应用程序在任何设置在网络上可用,您需要在 IP 地址上运行该应用程序0.0.0.0更多详情请点击此处在 Stack Overflow 上找到的另一个答案。正如官方 Python Flask 快速入门指南中明确解释的那样

外部可见服务器

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

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

flask run --host=0.0.0.0

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

如果您不希望某个应用程序在所有接口上都可用,则需要为您的计算机分配一个静态 IP 地址,然后将其设置flask run --host=xxx.xxx.xxx.xxx为使用该特定的静态 IP 地址。但对于像这样的情况 — — 您通过 DHCP 在路由器上运行它以供个人开发使用,绑定到0.0.0.0并不是什么大问题。

相关内容