Flask web-server的外部可见性问题

4 投票
2 回答
9571 浏览
提问于 2025-04-17 17:30

我成功安装了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'作为参数设置。接着,我在谷歌上找到了我的IP地址,并在浏览器的地址栏中输入了这个地址(同时hello-world脚本还在运行)。

结果我看到了一条信息:“请求输入用户名和密码”,并弹出了一个对话框让我输入用户名和密码。我不太确定,但我觉得这个提示可能是来自我的无线网络。请问有没有办法改变这种情况?

2 个回答

1

为了更详细地解释一下@tbicr说的内容,那个密码提示意味着你正在尝试通过80号端口连接到你的IP地址,这个端口通常是用来访问路由器或调制解调器的管理页面的。你其实应该通过5000号端口连接到你的IP地址,因为这是运行Flask应用时使用的默认端口,通常是用app.run()来启动的。

7

你是怎么运行你的应用程序的?如果你用 app.run() 来运行 Flask,Flask 会在你的电脑上创建一个自己的 WSGI 服务器,默认的地址是 127.0.0.1,端口是 5000(如果端口小于1000,可能需要权限)。如果你是通过 nginx 加 WSGI 或其他方式来运行 Flask,那么你的服务器会处理主机和端口的设置。

现在看起来你想通过服务器的端口来访问应用程序,比如 nginx 或 Apache。你可以试着用默认端口访问 Flask 应用,地址是 http://your-server-host-or-ip:5000,或者你可以尝试更改端口(明确设置),比如用 app.run('0.0.0.0', 8080),然后通过 http://your-server-host-or-ip:8080 来访问。

顺便说一下,你可以随时使用命令行工具获取 IP 地址,比如在类 Unix 系统中用 ifconfig,或者在 Windows 中用 ipconfig /all

撰写回答