代码之家  ›  专栏  ›  技术社区  ›  Tim Biegeleisen

无法通过HTTP/HTTPS访问EC2

  •  2
  • Tim Biegeleisen  · 技术社区  · 8 年前

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

    我为入站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(我已经确认这两个都在运行)。

    犯罪嫌疑人 我以前配置中的某些状态导致了这个问题,但我甚至不知道从哪里开始查找。

    任何帮助都将不胜感激。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Tim Biegeleisen    8 年前

    要对EC2进行入站/出站internet访问,您需要查找三件事:

    1. 您是否能够通过internet网关(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实例。