无法访问Azure计算实例中的Flask应用程序

问题描述 投票:0回答:2

首先,我测试并确认我的 Flask Python 脚本在我的本地计算机上运行良好。但我在机器学习工作室内的 Azure 计算实例中使用它时遇到了问题。以下是我的经历:

我的命令:

flask run --host=0.0.0.0

返回如下:

 * Serving Flask app "server"
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on all addresses.
   WARNING: This is a development server. Do not use it in a production deployment.
 * Running on http://10.0.0.4:5000/ (Press CTRL+C to quit)

10.0.0.4 是此 Azure 计算实例的私有 IP,我无法使用本地计算机和 Internet 访问它。由于连接超时而返回错误。

我如何使用本地计算机和互联网访问它?

我尝试了http://(其公共IP地址):5000/ 但返回了同样的错误。

其他注意事项:为此计算实例启用了 Vnet,以及网络安全组下的端口 5000。

python python-3.x azure flask virtual-machine
2个回答
0
投票

Azure 计算实例(在机器学习工作室中)无法通过外部 IP 访问,即使是具有分配的公共 IP 地址的实例也是如此。甚至这些实例的 SSH 也需要预先配置,而不是更改网络入站规则。

但是实际的虚拟机将允许这样做。如果您遇到类似问题,我建议您尝试使用 Azure 虚拟机。


0
投票

我在尝试访问托管在 Azure 计算实例上的 Flask 应用程序时遇到了类似的问题。经过测试,我确认 Flask 应用程序在 Azure 实例中本地工作正常,但我无法使用公共 IP 地址或从本地计算机从外部访问它。这是我尝试过的方法以及解决方法:

我尝试过的:

  1. 烧瓶命令: 我运行了

    flask run --host=0.0.0.0
    ,这使得应用程序可以在内部的所有界面上访问。但是,仍然无法从我的本地计算机或公共 IP 访问它。

  2. 公共IP访问: 我尝试使用公共 IP 访问该应用程序 (

    http://<public-ip>:5000/
    ),但收到超时错误。

  3. 防火墙和 NSG: 由于您提到 VNet 和网络安全组 (NSG) 配置为允许端口

    5000
    ,我认为该部分是正确的。但是,就我而言,我无法修改 NSG 设置,并且 Azure 防火墙仍然阻止访问。

解决方案:

由于我无法修改 NSG 设置,因此我转向 SSH 隧道 作为解决方案。通过使用 Serveo(反向 SSH 隧道服务),我能够将本地 Flask 应用程序(在端口

5000
上运行)转发到公共 URL,我可以从外部访问该 URL。

这是我使用的命令:

ssh -R diabot:80:localhost:5000 serveo.net

此命令将流量从

serveo.net
域转发到在
localhost:5000
上运行的 Flask 应用程序,使其可以通过自定义子域(如
https://diabot.serveo.net/
)进行访问。

结论:

由于修改 NSG 设置对我来说不是一个选项,因此 通过 Serveo 的 SSH 隧道 是一个完美的解决方案。这使我能够毫无问题地从外部访问我的 Flask 应用程序。如果您无法更改 NSG 设置或直接调整防火墙配置,您可能需要考虑此方法。

如果这有帮助或者您是否需要进一步帮助,请告诉我!

© www.soinside.com 2019 - 2024. All rights reserved.