72

我已经用 EC2 进行了几天的试验,并且一直在努力抵抗甚至能够访问我托管的示例站点。堆栈是带有 Thin 和 Nginx 的 Rails 3.1.3。

我尝试了几种不同的配置,最后运行了 Nginx 自动安装脚本,当我执行 curl http://ec2-107-20-143-179.compute-1.amazonaws.com/时它会返回一个网页. 但是,当我将浏览器指向那里时,它会永远挂起,然后说找不到页面。

我已经分配了一个弹性 IP 地址,并且我已经通过端口 80 启用了 HTTP 访问。

我在系统管理员方面没有太多经验,在这一点上我基本上被难住了。任何建议将不胜感激。

4

16 回答 16

129

您是否为所有 ip 启用了 http 端口?这将通过以下方式完成:

EC2 -> 安全组 -> 默认(或您的客户) -> 入站

然后为 HTTP 创建一个新规则,作为源,您应该分配:0.0.0.0/0

那应该这样做。

于 2012-04-20T21:07:02.660 回答
44

认为 AWS UI 可能已经更新,但基于 Deleteman 的回答

  • 登录 EC2 仪表板
  • 实例 > 实例
  • 操作下拉菜单 > 网络 > 更改安全组
  • 您可能会看到您只允许启动向导 1 对我来说只允许端口 22 上的 SSH 访问

因此,正如 Deleteman 所提到的,您可能需要更改您的安全组......

  • 登录 EC2 仪表板
  • 网络和安全 > 安全组
  • 删除可能在搜索框中的所有过滤器以显示所有组
  • 我个人编辑了默认的 VPC 安全组,因为这对我来说是一个沙箱,我想你会想为你的项目创建一个安全组
  • 选中安全组复选框,选择操作下拉菜单并单击“编辑入站规则”,我使用以下入站规则以确保一切正常

规则

  • 当您重新访问 Instances > Instances > Description 时,您应该会看到安全组和规则

在此处输入图像描述

  • 一旦你对它的工作感到满意,我可能会用 HTTP 和 HTTPS 替换所有流量,如果这就是所有需要的话
于 2014-12-03T13:21:41.933 回答
25

我早些时候在这里寻找解决我遇到的类似问题的方法。在我的案例中,除了 EC2 安全组之外,EC2 实例还运行了自己的防火墙。命令'system-config-firewall'让我可以打开端口。默认情况下未打开端口 80 (HTTP) 和 3306 (MySQL)。22 (SSH) 已打开。我还必须执行“yum install system-config-firewall”。

总而言之,我的解决方案是:

> yum install system-config-firewall
> system-config-firewall
于 2012-07-20T00:16:07.640 回答
21

这个答案适用于不知道他们在用 ec2 实例做什么的新手。

我遇到了同样的问题,并尝试了所有安全组修复无济于事。

事实证明,我需要从命令行打开我的服务器。

sudo service httpd start 

有时它很黑,不是因为保险丝熔断,而是因为你没有轻按开关。

于 2013-05-07T16:39:08.600 回答
7

我也在努力解决同样的问题,也创建了安全组,但没有应用于实例。只需为 http 创建新规则。并从右键单击实例应用并选择安全组并分配它。

于 2014-04-13T10:58:42.763 回答
6

我在使用 ubuntu EC2 实例时多次遇到同样的问题,在这里我添加了所有帮助我在不同情况下解决问题的方法。

  1. 确保您正在从浏览器访问“公共 IPv4 DNS”或“公共 IPv4 地址”或“弹性 IP 地址”。

Step1 截图

  1. 检查80端口是否打开。 Step2 80端口未开放 在这里可以看到Inbound rules中没有打开 80 端口。所以我们先打开80端口。为此,单击安全选项卡,您可以看到安全组打开这个新选项卡 安全组 现在您必须编辑入站规则。 编辑入站规则 单击添加规则 然后选择类型HTTP和源AnyWhere并保存。 在此处输入图像描述 同样,您也使用 HTTPS。

  2. 如果 HTTPS 未启用,请检查浏览器 URL,如果我们尝试从浏览器默认访问,它可能是 HTTPS,如果是,请将其设为 HTTP 并重试。

  3. 编辑网络 ACL。选择网络选项卡并在新窗口中 打开子网 ID 。网络选项卡和子网 ID

打开的子网 ID 从 Subent Id在新窗口中 打开Network ACL现在编辑入站规则。编辑入站规则 100 规则 100 应如下所示,即 type==

于 2021-05-12T13:10:16.120 回答
5

对我来说,这就像在我的浏览器上将url 从https://my-site更改为一样简单。http://my-site(此解决方案仅适用于仍然能够通过 SSH 连接到 ec2 实例但无法通过浏览器连接的人)

于 2021-07-11T03:42:03.400 回答
3

Octopus 的答案对我来说是正确的,但 Windows 机器除外。我需要去 Windows 防火墙,如果它不匹配规则,它会阻止所有来自 VM 的流量。规则中没有启用端口 80,所以我只需要添加一个。

于 2013-11-27T04:16:01.097 回答
1

Very stupid of me as I forgot to install web server (HTTP server) because of which my ec2 instance public IP was not working. Answering this question as this can also be one of the reason which one should not miss as I did.

You can install either,

nginx:

sudo apt-get install nginx

apache2:

sudo apt-get install apache2
于 2015-12-08T16:29:11.447 回答
0

我的问题是浏览器。

铬作品;火狐不工作。

于 2021-03-15T06:24:55.807 回答
0

最好的方法是编辑您的安全入站规则。请参考下面的快照。

在此处输入图像描述

于 2022-01-08T13:57:15.277 回答
0

以下是您可以遵循的步骤,当您检查这两个步骤时,它们很可能肯定会起作用。

  1. 确保您在浏览器中使用 http:// 而不是在 IP 和亚马逊 IPV4 公共 DNS 上使用 https://(它以某种形式出现,例如http://ec2-some-ip-address-here.region.compute.amazonaws.com

  2. 单击instance id并向下滚动,

go to the security tab,

click on security group it will look like this [![enter image description here][1]][1]

Click on edit inbound rules

添加这个

For type- choose HTTP
Source - choose anywhere or anywhere ipv4

然后点击保存就完成了。

这两者的结合应该可以正常工作。

于 2021-12-21T10:34:05.717 回答
0

我有同样的问题,因为我没有使用 Ubuntu 或 linux 的经验,所以我的大脑很糟糕。Parag 的回答修复了它。

我很愚蠢,因为我忘记安装 Web 服务器(HTTP 服务器),因为我的 ec2 实例公共 IP 无法正常工作。回答这个问题也可能是我不应该错过的原因之一。

你可以安装,

nginx:

sudo apt-get install nginx

阿帕奇2:

sudo apt-get install apache2
于 2017-06-25T18:31:13.600 回答
0

我知道这是一个非常古老的线程,但最近在许多服务中都遇到了这个问题。当您在端口示例 3000 上运行任何应用程序服务器(如 Puma 或 Unicorn)时,没有负载均衡器或像 Nginx 前端这样的代理。您必须遵循两个步骤:

  1. 将服务绑定到 0.0.0.0/3000 而不是 127.0.0.1/3000。(这将使您的服务保持开放并可供互联网上的任何人访问,即第 2 步出现)。
  2. 如果您希望任何人通过 Internet 访问或添加 VPN 或您的网络 IP 以仅允许您和您的团队使用,则在 AWS 安全组中现在允许 0.0.0.0 的端口 3000。
于 2020-05-19T16:53:24.773 回答
0

当我尝试在 EC2 上运行我的 go 应用程序时,我遇到了非常相似的情况。如果您在浏览器上看不到适当的消息或结果,即使您:

  • 可以很好地使用curl,
  • 完成正确配置安全组
    • 为世界或您的 IP 地址打开 80、443 的笔入站流量和
    • 开放入站流量 22;和
    • 打开您使用的端口的入站流量(如 8080、4343 等)),以及;
  • 运行您的应用程序以接受来自外部的连接(npm app.jsgo run .

确保您输入了http://ec2-...,而不是https://ec2-...在您的浏览器上。https://即使您打开 443 端口,您也无法连接到服务器,除非您已经配置了 ssh 证书。输入带有协议的完整地址http,不要省略它,可能会解决问题。

于 2021-06-26T22:09:48.147 回答
-2

当我尝试从浏览器访问公共 IP 时,无法访问我的 Windows Ec2 实例。在检查完以上所有内容后,我不得不更新阻止传入流量的 Windows (Defender) 防火墙设置。

于 2021-08-04T12:02:50.370 回答