AWS 连接在端口 8080 上被拒绝

ner*_*tex 5 curl amazon-web-services flask

我有一个 EC2 实例,在端口 8080 上运行 Flask 服务器。

* Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
Run Code Online (Sandbox Code Playgroud)

我可以运行curl并从我的 EC2 实例获取响应。

$ curl -X GET '0.0.0.0:8080/fbeac'
Run Code Online (Sandbox Code Playgroud)

但是,我无法使用公共 IP/DNS 来获取响应并运行

$ curl -X GET '3.135.62.118:8080/fbeac'
Run Code Online (Sandbox Code Playgroud)

结果是curl: (7) Failed to connect to 3.135.62.118 port 8080: Connection refusedcurl当我尝试使用本地计算机时,我遇到了同样的错误。

我的应用程序正在侦听端口 8080,我通过运行来检查该端口netstat

$ netstat -an | grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
Run Code Online (Sandbox Code Playgroud)

此外,我已确保安全组设置正确。我仅尝试了自定义 TCP 端口 8080、所有 TCP 端口和(当前)所有流量。我还在旁边打开了 HTTP/HTTPS 端口以防万一,但没有成功。

这让我相信这可能是防火墙问题,但我使用的是 Amazon Linux 计算机,默认策略似乎是ACCEPT,我通过运行进行了检查iptables

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Run Code Online (Sandbox Code Playgroud)

还有其他我应该检查的事情或者我应该翻转的按钮吗?

我的 AWS 实例 ID 是i-0080c730c4287ca3c

dmi*_*kov 1

我建议检查您的 EC2 实例安全组中定义了哪些访问规则。您可能需要打开端口8080

另外,作为旁注,请考虑不要在生产中使用 Flask 开发服务器。它适合测试,但您确实应该使用 uwsgi 之类的东西来处理生产工作负载。