首页 > 解决方案 > 无法通过 HTTP/HTTPS 访问 EC2

问题描述

我最近不得不完全重建我的 AWS EC2 环境,因为我不小心删除了 SSH 密钥,以为它是别的东西。不幸的是,我无法访问我已确认在该 EC2 实例上运行的 Tomcat 实例。

我为入站 HTTP 流量添加了以下安全组:

Type.            Protocol  Port Range       Source
HTTP             TCP       80               0.0.0.0/0
HTTP             TCP       80               ::/0
Custom TCP Rule  TCP       8080             0.0.0.0/0
Custom TCP Rule  TCP       8080             ::/0
SSH              TCP       22               (my IP address)

我有三个安全组,上面的规则被添加到名为的组中default

rds-launch-wizard
launch-wizard-1
**default

我通过 AWS 购买了一个域,我使用 Route 53 指向了这个 EC2 实例。以前,DNS 可用,但现在不可用。但是,这里有一个更大的根本问题,因为我什至无法 ping 我的 EC2 实例的公共 IP。

事实上,我可以通过端口 22 上的 SSH 访问我的 EC2 实例,这就是为什么我能够设置 Java 和 Tomcat(我已经确认它们都在运行)。

怀疑我以前的配置中的某些状态是造成这个问题的原因,但我什至不知道从哪里开始寻找一些东西。

任何帮助,将不胜感激。

标签: amazon-web-servicesamazon-ec2

解决方案


要对您的 EC2 进行入站/出站 Internet 访问,您需要寻找三件事:

  1. 您是否能够通过互联网网关 (IGW) 从 AWS 外部或内部进行 SSH?如果您可以从外部进行 SSH,那么您已经正确设置了 IGW。否则,请确保您的子网的路由表通过如下所示的路由指向 IGW:

0.0.0.0/0 igw-efxxxxxxx Active No

  1. 网络 ACL:转到您的 EC2 的子网并找到其关联的 NACL 创建入站和出站规则以通过添加如下规则来允许上述 NACL 的流量:

100 ALL Traffic ALL ALL 0.0.0.0/0 ALLOW

  1. 安全组:您的安全组看起来不错。那里不需要更改。 但是,根据您在下面所做的评论,虽然您确实定义了具有正确入站规则的安全组,但无论出于何种原因,您都没有将该安全组与您的 EC2 实例相关联。因此,您定义的入站规则没有被应用。要解决此问题,请从 EC2 实例标签访问以下内容:

Actions -> Networking -> Change Security Groups

然后,通过选中相应的框将您的安全组与您的实例相关联。进行这些更改后,您的入站规则应该会生效,并且您应该能够访问在 EC2 上运行的 Tomcat 实例。


推荐阅读