无法通过公共 ip 访问 EC2实例上的站点

我已经用 EC2做了几天的实验,甚至连访问我托管的示例站点都感到头疼。这个栈是 Rails 3.1.3,支持瘦和 Nginx。

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

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

我在系统管理方面没有多少经验,现在基本上被难住了。如有任何建议,我将不胜感激。

87429 次浏览

是否启用了所有 ip 的 http 端口? 这将通过以下操作来完成:

EC2-> 安全组-> 默认值(或自定义值)-> 入站

然后为 HTTP 创建一个新规则,作为源代码,您应该分配: 0.0.0.0.0

应该可以了。

我早些时候在这里寻找一个类似问题的解决方案。在我的示例中,除了 EC2安全组之外,EC2实例还运行自己的防火墙。命令‘ system-config-wall’允许我进入系统打开端口。缺省情况下没有打开端口80(HTTP)和3306(MySQL)。22(SSH)开放。我还得做“百胜安装系统-配置-防火墙”。

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

> yum install system-config-firewall
> system-config-firewall

这个答案是给那些不知道如何使用 ec2实例的新手准备的。

我也遇到了同样的问题,所以尝试了所有的安全组修复程序,但都无济于事。

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

sudo service httpd start

有时候天很黑,不是因为保险丝烧断了,而是因为你没有按开关。

章鱼的答案对我来说是正确的,除了一台 Windows 机器。 我需要去 Windows 防火墙如果不符合规则就阻断虚拟机的所有通信。端口80在规则中没有启用,所以我只需要添加一个。

我也在与同样的问题作斗争,创建了安全组,但没有应用到实例。只需为 http 创建新规则。并从右键单击实例应用程序,选择安全组并分配它。

认为 AWS 用户界面可能已经更新,但基于删除的答案

  • 登录到 EC2仪表板
  • 实例 > 实例
  • 行动下拉 > 联网 > 更改保安群组
  • 您可能会看到,您只允许启动向导 -1,而我只允许端口22上的 SSH 访问

正如 Deleteman 提到的,你可能需要改变你的安全组..。

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

Rules

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

enter image description here

  • 一旦你高兴它的工作,我可能会替换所有的 HTTP 和 HTTPS 流量,如果这是所有需要的

我非常愚蠢,因为我忘记安装 网络伺服器(HTTP 服务器) ,我的 ec2实例公共 IP 因此无法工作。回答这个问题,因为这也可以作为一个理由,一个人不应该错过我这样做。

你可以选择安装,

返回文章页面

sudo apt-get install nginx

阿帕奇2:

sudo apt-get install apache2

我也有同样的问题,因为我没有使用 Ubuntu 或者 linux 的经验,所以一直在绞尽脑汁。Parag 的答案解决了这个问题。

我非常愚蠢,因为我忘记安装 Web 服务器(HTTP 服务器) ,因为我的 ec2实例公共 IP 不工作。回答这个问题,因为这也可以作为一个理由,一个人不应该错过我这样做。

你可以选择安装,

返回文章页面

sudo apt-get install nginx

阿帕奇2:

sudo apt-get install apache2

我知道这是一个非常老的线程,但面对这个问题与许多服务最近。当您在端口示例3000上运行任何应用程序服务器(如 Puma 或 Unicorn)时,没有使用负载均衡器或 Nginx 之类的代理作为前端。你必须遵循两个步骤:

  1. 将服务绑定到0.0.0.0/3000而不是127.0.0.1/3000 让你的服务在互联网上为任何人开放和访问, 这就是第二步)。
  2. 在 AWS 安全组中,如果需要,现在允许端口3000为0.0.0.0 任何人都可以通过互联网访问或添加 VPN 或您的网络 IP 只允许你和你的团队。

我的问题是浏览器。

Chrome 能用,Firefox 不能用。

我在 ubuntu EC2实例中多次遇到同样的问题,在这里我添加了所有的方法,这些方法帮助我在不同的情况下修复这个问题。

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

Step1 screenshots

  1. 检查80端口是否打开。 Step2 port 80 is not open 这里您可以看到,端口80在 入境规则中没有打开。我们先打开80号端口。点击 保安标签,你可以看到 安全小组打开这个新标签 Security group 现在您必须编辑入站规则。 Edit inbound rules 点击 增加规则 然后选择类型 HTTP和源 任何地方并保存它。 enter image description here 类似地,您还可以使用 HTTPS。

  2. 检查浏览器的 URL,如果 HTTPS 没有启用,如果我们尝试访问浏览器默认它可能是 HTTPS,如果是这样,请使它 HTTP 和再次尝试。

  3. 编辑网络 ACL。选择 交际选项卡并在新窗口中打开 子网 IDNetworking tab and subnet Id

Opened subnet Id 从 Subent Id 在新窗口中打开 网络 ACL 现在编辑入站规则。 Edit inbound rule 100 Rule 100 should look like this, i.e, type=="HTTP"

当我试图在 EC2上运行我的 Go 应用程序时,我遇到了一个非常类似的情况。如果您无法在浏览器上看到适当的消息或结果,即使您:

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

确保在浏览器中输入的是 http://ec2-...而不是 https://ec2-...。除非已经配置了 ssh 证书,否则即使打开443端口,也无法使用 https://连接到服务器。使用 http协议输入完整地址,不遗漏,可以解决问题。

对我来说,只需要在浏览器上将网址从 https://my-site改为 http://my-site即可。(此解决方案仅适用于仍然能够 SSH 到 ec2实例但无法通过浏览器连接的人)

当我试图从浏览器访问公共 IP 时,无法访问我的 WindowsEc2实例。在检查所有以上,我不得不更新的 Windows (防火墙)防火墙设置,阻止了流入的交通。

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

  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

然后点击保存,就搞定了。

这两者的结合应该可以很好地发挥作用。

最好的方法是编辑您的安全入站规则。请参阅下面的管理单元。

enter image description here

当我们打开入境规则 http 和 https 时,它会自动进入一个 http 或 https,如下所示: 确保在浏览器中输入的是 原文地址: http://ec2- ,而不是 Https://ec2- ...

对我来说,我需要设置 ufw 并允许它在我的 EC2实例上