无法通过 IP 地址访问 EC2 服务器

无法通过 IP 地址访问 EC2 服务器

我在 Web 浏览器中访问 EC2 实例的弹性公共 IP 时遇到了这个问题。安装了 REDHAT 6.3 和 nginx Web 服务器(已启动并正在运行),还确保启用了端口 80 并设置了所需的一切。

现在是时候输入公共 IP 来查看默认的 nginx 网页了,但什么也没发生。我无法访问 IP 地址。

现在我可以 ping 通其他网站,但无法 ping 通我的 IP 地址。

现在,经过几个小时的尝试并试图弄清楚发生了什么...我想我应该检查 REDHAT OS 上的网络,每当我尝试编辑任何与网络相关的内容时..我就会失去与服务器的连接并且无法重新启动网络。

我这里哪里错了?为什么仅通过 IP 访问我的服务器就这么困难?我现在需要做什么?

谢谢。

编辑。这是与 EC2 实例关联的安全组

Ports   Protocol    Source
20-21   tcp 0.0.0.0/0   
22  tcp 0.0.0.0/0   
80  tcp 0.0.0.0/0   
14000-14050 tcp 0.0.0.0/0

答案1

所以,这里可能有几件事情是错误的。你可以逐一测试,然后找到问题所在。

  1. 首先检查您是否能够从外部连接到端口。为此,请使用此命令

    # telnet IP 80
    

    如果您能够通过此方式连接,则意味着您的 WebServer 设置肯定有问题,您不应该查看下一个规则。

  2. 如果第一个方法不起作用,则第二个要检查的是计算机中的 iptables,而不仅仅是 AWS 安全组。要执行相同操作,请检查此命令的输出。

    # iptables -L -n
    

    如果您没有特别设置,默认策略应始终为“接受” DROPREJECT要测试 iptables 是否是问题所在,您可以尝试通过刷新规则或停止 iptables 服务来禁用 iptables。

    要刷新规则,请使用以下命令:

    # iptables -F
    

    要停止 iptables 服务:

    # service iptables stop
    

    现在尝试访问您的网站。

  3. 第三个选项是检查您机器上的 Selinux。在 redhat 机器上,SElinux 默认启用。要检查,请使用以下命令并检查状态:

    # getsebool
    

    它应该说这样的话:

    getsebool:  SELinux is disabled
    

    如果已启用,则可能是此原因。只需尝试使用此命令暂时禁用它:

    # setenforce 0
    

    这将暂时禁用您机器上的 SElinux。如果此操作解决了您的问题,只需将状态从 更新为Enforcing,它将永久禁用您机器上的 SElinux。disabled/etc/sysconfig/selinux

希望这有帮助。

答案2

如果它只是网络流量并且您仍然可以通过 ssh 连接到您的实例,那么它几乎肯定与您的 nginx 配置有关。

答案3

GeekRide 很好地强调了不同的故障排除步骤。我的部署的答案与 iptables 有关。停止服务是快速识别问题的一个好方法。

要解决此问题,请确保将您的端口“插入”到表中。不要附加,因为您很可能会在列表末尾的“拒绝所有”条目后附加。此示例使用 5 放置在端口 22 规则之后。在 aws 中,由于您以 ec2-user 身份连接,请添加 sudo 命令。

# sudu su
# iptables -L -n
# iptables -I INPUT 5 -p tcp --dport XXXXX -j ACCEPT

如果成功,请务必保存,以防 iptables 服务重新启动

# iptables-save

答案4

除了将 AWS 安全组设置为允许端口 80 之外,还要检查 Redhat 防火墙。默认情况下,端口 80 不开放。

在您的 redhat 系统上运行system-config-firewall-tui以获取 redhat 的防火墙配置实用程序,然后允许 http 端口 80 访问。

相关内容