当端口 5000 对 EC2 上的入站流量开放时,为什么我无法点击 Flask 应用程序

ddd*_*ddd 0 amazon-ec2 flask

我正在尝试在 EC2 上部署我的 Flask 应用程序。我想手动部署它,而不是使用 Beanstalk。最终目标是用nginx设置wsgi。在此之前,我只想像在本地开发计算机上所做的那样部署它,即启动 virtualenv,安装所有依赖项,然后运行python3 application.py. 默认情况下,它在端口 5000 上运行。它在本地工作在“localhost:5000/api”。(api是蓝图网址)。但是,当我在 EC2 (ubuntu) 实例上执行相同操作时,它不起作用。我把网址“ec2-public-ip:5000/api”放在浏览器中,它说“这个页面不工作。[ip]没有发送任何数据”。

application.py 是应用程序的入口点:

from myapp.api.factory import create_app

app = create_app(True)

def main():
    app.run(debug=True, threaded=True)

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

我为此实例设置了安全组,它允许来自任何地方 (0.0.0.0/0) 的端口 80、22、5000 的入站流量

在此处输入图片说明

为什么从 5000 访问时不起作用?

Bhu*_*bar 5

添加这个

app.run(host= '0.0.0.0')

根据文档

http://flask.pocoo.org/docs/1.0/quickstart/#a-minimal-application

外部可见服务器 如果您运行该服务器,您会注意到该服务器只能从您自己的计算机访问,而不能从网络中的任何其他计算机访问。这是默认设置,因为在调试模式下,应用程序的用户可以在您的计算机上执行任意 Python 代码。

如果您禁用了调试器或信任您网络上的用户,则只需在命令行中添加 --host=0.0.0.0 即可使服务器公开可用:

flask run --host=0.0.0.0 这告诉您的操作系统侦听所有公共 IP。