![无法从主机访问 Virtual Box 上的服务器?](https://linux22.com/image/1576991/%E6%97%A0%E6%B3%95%E4%BB%8E%E4%B8%BB%E6%9C%BA%E8%AE%BF%E9%97%AE%20Virtual%20Box%20%E4%B8%8A%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
我在 MacOS 上的 Virtual Box 中运行 Ubuntu 18.04.1。我localhost
在 Ubuntu 中使用 Python Flask 设置了一个服务器,http://127.0.0.1:5000/
我试图从我的 Mac 访问这个本地主机,但无法访问。我为虚拟盒使用了 Bridge 类型的连接,这样我的 Mac 和虚拟盒都可以有 IP 地址。这是我的虚拟盒网络设置的图片:
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
并不是什么大问题。