111:尝试连接到 AWS EC2 实例上的 Flask 应用程序时出现连接被拒绝错误

Posted

技术标签:

【中文标题】111:尝试连接到 AWS EC2 实例上的 Flask 应用程序时出现连接被拒绝错误【英文标题】:111: Connection refused error when trying to connect to Flask app on AWS EC2 instance 【发布时间】:2021-04-23 05:03:39 【问题描述】:

我正在努力弄清楚如何连接到托管在 AWS EC2 实例上的 Flask 应用程序。它正在运行和部署,但我收到以下错误。

connect() failed (111: Connection refused) while connecting to upstream, client: 71.228.155.185, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:8000/favicon.ico", host: "my-site***", referrer: "my-site***"

我已经看到了关于确保我的应用程序指向端口 8000 的类似问题的其他答案,因此我在初始化时有以下内容。

if __name__ == "__main__":
    application.run(host='127.0.0.1', port=8000)

我还进入了我的 VPC 安全组,并确保端口 80 上允许所有 HTTP 连接,我认为这应该使我能够连接。

还有其他人发现这个问题并解决了吗?

【问题讨论】:

这意味着 nginx 无法连接到烧瓶应用服务器。检查应用程序日志,可能由于某些错误而无法启动 如果你ssh到实例,你能确认你的flask在http://127.0.0.1:8000运行时curl它吗? 我确认该应用程序正在日志中运行。我会尝试 curl 看看是否有效 检查 AWS VPC 流日志。 ***.com/a/65341085/14843902 确认我可以从 SSH 中启动和停止应用程序,但无法从外部访问它。尝试使用可达性分析器,它显示它是可达的,所以不知道下一步该做什么。是否有我应该处理的 nginx 或 wsgi 配置文件?亚马逊文档说 nginx 自动传递到端口 5000,所以尝试切换到该端口,但仍然没有 【参考方案1】:

您谈论端口 80 和端口 8000....应用程序使用的是哪一个?如果是 8000,则需要在安全组中允许端口 8000。

端口 8000,源 0.0.0.0/0

根据您的需要,您可能希望收紧 Source。如果您的服务器具有公共 IP,这一点更为重要。

【讨论】:

以上是关于111:尝试连接到 AWS EC2 实例上的 Flask 应用程序时出现连接被拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章

从 Elastic Beanstalk 连接到托管在 AWS ec2 上的 MongoDB

将 EC2 实例连接到另一个 AWS 账户上的 RDS 卷

无法从 AWS EC2 实例连接到 Mlab.com 数据库

如何连接到 AWS 中的 EC2 实例?

从 AWS Beanstalk 应用程序连接到 AWS EC2

无法连接到端口 8080 上的 EC2 Windows 实例