无法从 AWS 外部通过 HTTP 连接到 EC2 实例

Nac*_*cho 3 linux amazon-ec2 amazon-web-services

如果它有什么不同,那就是在 AWS 中国。

我有一个新的 EC2 实例。我几天前创建了它。它应该是 Rails 应用程序的应用程序服务器。Apache 已启动并正在运行,并且可以正常工作(curl localhost 有效)。当我从另一个 EC2 实例尝试时,它也响应 OK(使用 EC2 内部 IP 地址)。

但是,如果我使用外部 IP 地址,则它不起作用。它超时了。

我检查的东西:

  • Apache 正在运行,并且正在侦听 eth0 和 localhost。
  • 实例中没有防火墙(默认 Amazon Linux 映像,iptables -L 返回所有 ACCEPT 策略,没有其他规则)。
  • 安全组是正确的。它有对全球允许的入站端口 80 和端口 443 的规则。
  • 我正在修改的安全组确实应用于有问题的实例。我尝试从该安全组中删除 SSH 访问权限,但我与服务器的 ssh 连接中断了。再次添加访问权限,我能够通过 ssh 进入。因此安全组正在工作并应用规则。
  • 我什至尝试在实例前设置负载均衡器。负载均衡器也无法访问实例。
  • 是的,我使用的是正确的 IP 地址。我一遍又一遍地检查它。
  • 我尝试使用公共主机名,它仍然不起作用(为什么要这样做?),但它确认我拥有正确的 IP 地址,因为它确实在实例内部工作(因为它在 AWS 内部指向内部 IP 地址)。

我完全被这个难住了。对我来说这可能是一个非常愚蠢的错误,但我已经尝试了我能想到的一切。我用谷歌搜索并尝试了其他人所说的对他们有用的一切。我让一个同事调查过,他也无法让它发挥作用。

那么,有什么想法吗?我错过了什么?

谢谢!

编辑:一位同事提出了一些完全有意义的建议:如果我在不同的端口上收听怎么办?那它有效吗?事实证明确实如此。配置Apache监听9876端口,在安全组中打开,当然可以了。所以它只是端口 80 被过滤了。我的下一步是创建一个负载均衡器,它侦听端口 80 并转发到端口 9876 到实例。而且,当然,它不起作用。LB连接到实例,说它在线,但我无法在80端口访问LB。所以我在AWS中国的80端口似乎无法访问任何东西,我仍然在这里完全被阻止。

Nac*_*cho 5

我最终得到了另一种媒体的回应,但我想我会在这里分享,以防其他有同样问题的人徘徊在这个问题上。

服务器所有者需要一个 ICP,他们拥有,但尚未通过 AWS 中国的身份验证。ICP是中国政府授权企业运营网站的某种文件。

更多信息:https : //www.amazonaws.cn/en/about-aws/china/faqs/#do-i-need-icp-recordal