【问题标题】:Access web server running on Virtual box ubuntu on host windows machine访问在主机 Windows 机器上的 Virtual box ubuntu 上运行的 Web 服务器
【发布时间】:2016-06-15 04:45:41
【问题描述】:

我正在使用 Windows 机器上的 Virtual Box Manager 运行 Ubuntu。在虚拟机盒子 ubuntu 内,我正在运行一个 python 烧瓶应用程序,该应用程序在 http://localhost:5000 运行。

我尝试使用我使用ifconfig 获得的 VM 框 IP 访问 Windows 机器上的 VM 框 localhost URL。但它说:

Your Internet access is blocked

我是否以正确的方式访问它?

这是我的 python 烧瓶代码:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

【问题讨论】:

  • 你在flask应用中设置了主机吗?
  • @HassanMehmood 更新了我的 python 烧瓶代码
  • 你需要给主机这样的app.run(host='0.0.0.0')
  • 行得通。谢谢:)
  • 那么这个默认运行在哪里? @HassanMehmood

标签: python flask virtualbox


【解决方案1】:

您需要在启动应用时指定 host='0.0.0.0'。默认情况下,它只会接受来自 localhost 的请求。因此,如果您从其他 IP 发送请求,则必须指定主机。

见下面的例子。

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run(host='0.0.0.0')

如果您想在访问应用程序时激活调试模式以分析异常/错误。您还可以将调试属性设置为“True”。

if __name__ == "__main__":
    app.run(host='0.0.0.0', debug=True)

【讨论】:

  • 这就像一个魅力,但 host='0.0.0.0' 的真正含义是什么?
  • @Echelon 这意味着您的服务器现在可以从任何 IP 地址访问。
【解决方案2】:

以下代码将允许您从任何公共 IP 而不是 127.0.0.1 访问 Flask 网络

if __name__ == '__main__':
   app.run(host='0.0.0.0', debug='TRUE')

默认情况下,Flask 在端口:5000 上运行。有时在 VM 上,此端口将被阻止。要允许此端口上的流量,请执行以下命令。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    相关资源
    最近更新 更多