Flask web服务器的外部可见性问题



我已经成功安装了flask并运行了hello-world脚本:

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
    return 'Hello World!'
if __name__ == '__main__':
    app.run()
我对它的简单程度印象深刻。然后我想让我的网络服务器对外可见。按照建议,我把host='0.0.0.0'作为run函数的参数。然后我找到了我的IP地址(在谷歌),并把它放在我的web浏览器的地址行(当hello-world脚本运行时)。

结果我得到:"用户名和密码正在请求"和一个对话框,我需要把用户名和密码。我不确定,但我想它来自我的无线网络。有办法改变这种行为吗?

如何运行您的应用程序?如果你将flask作为app.run()运行,flask会在你的主机(默认为127.0.0.1)和端口(默认为5000)上创建自己的WSGI服务器(如果端口<1000)。如果你使用nginx + WSGI或其他方式运行flask,你的服务器会解析host和port。

现在看起来你想通过端口解析你的服务器,如nginx或Apache获取应用程序。尝试使用默认端口通过http://your-server-host-or-ip:5000获得flask应用程序,或者尝试更改端口(设置明确),如app.run('0.0.0.0', 8080)并通过http://your-server-host-or-ip:8080获得它。

顺便说一下,你总是可以使用命令行工具获得IP地址,例如,类unix系统的ifconfig,或Windows的ipconfig /all

详细说明一下@tbicr所说的内容,该密码提示表明您正在尝试连接到端口80上的IP,该端口很可能承载了路由器/调制解调器的管理页面。你想在端口5000上连接到你的IP,这是使用app.run()运行的Flask应用的默认端口。

最新更新