无法从外部访问 apache2

无法从外部访问 apache2

我在 AWS EC2(Ubuntu)上使用弹性 IP 为 apache2 服务器托管一个默认站点。

安全组设置为打开所有入站(用于测试目的)。

我可以使用公共 IP 通过 SSH 访问服务器,但无法通过 HTTP 访问。

我可以从本地主机浏览该网站(使用lynx 127.0.0.1)。

我还可以从同一子网上的不同 EC2 浏览该网站。

这是我的 iptables:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

开放端口:

tcp               LISTEN             0                  128                                   0.0.0.0:22                                 0.0.0.0:*                                  
tcp               LISTEN             0                  511                                         *:80                                       *:*                                  
tcp               LISTEN             0                  128                                      [::]:22                                    [::]:*                                  
tcp               LISTEN             0                  511                                         *:443                                      *:*  

防火墙处于非活动状态。

我也刚刚尝试在同一个子网上旋转的第二台虚拟机上安装 nginx,奇怪的是我也无法访问 Web 服务器的 80 端口。

因此,现在我也在单独的子网上创建了一个新实例,但仍然无法通过 HTTP 访问它。但可以通过 SSH 访问它。

不确定我遗漏了什么。

更新 1:

这太奇怪了,我在那台机器上也运行着 MySQL,而且它也是可以访问的。看来路由和安全组都是正确的,但出于某种原因,HTTP 和 HTTPS 流量被某些东西阻止了。

更新 2:

我在 VPC 上打开了流日志,端口 80 上的所有请求都被拒绝,而 22 和 3306 可以毫无问题地进入。

my.ip.goes.here. 10.1.1.68 64087 80 6 1 64 1694528397 1694528415 REJECT OK

网络 ACL设置为允许所有入站和出站:

100 All traffic All All 0.0.0.0/0   Allow
*       All traffic All All 0.0.0.0/0   Deny

安全组允许所有进出流量:

All Traffic 0.0.0.0/0

这真是越来越奇怪了。

答案1

尝试使用 tspdump 跟踪数据包 - 无论数据包是否到达主机。如果数据包到达,则显然服务器上的某些东西正在阻止或丢弃它。完全重置所有防火墙规则,或者更好的是,完全关闭它(用于测试)。好吧,首先,检查 Web 服务器设置,可能有些东西配置不正确。尝试插入一个简单的静态页面并结合这些措施 - 您一定会找出问题所在。

答案2

我找到了一个解决方案。

我在端口 81 上打开了 nginx,它运行正常,所以我认为它一定只是阻止了任何 Web 端口。

经过一番研究后,这是因为我的 EC2 被报告了“EC2 滥用报告”。

在数百万封电子邮件中有一封:

我们收到了涉及您 AWS 账户资源的滥用报告。因此,我们针对涉案资源采取了以下步骤,以缓解此类活动:

** 该地区的入站 HTTP 端口 80、8080 和 443 已被阻止**

以前,该地区安装了某种软件的不同 EC2 实例遭到黑客攻击并被关闭。

如果控制台中的 EC2 实例能够以某种方式显示这一点,那就太好了。

相关内容