打开80端口EC2亚马逊网络服务

185
我已经在我的E2C实例的安全组中的Web控制台中打开了80端口,但我仍然无法通过浏览器使用公共DNS访问它。
有任何想法吗?

2
@Ripped Off,这个问题更适合放在哪里? - Janac Meena
1
似乎我无法添加答案。对我来说,这是一个Docker问题,它没有在80和443上进行监听。只需重新启动,然后开始监听80和443即可。 - emilie zawadzki
4个回答

373

这其实非常容易:

  • 转到左侧导航的“网络和安全”->“安全组”设置
  • 找到您的实例所在的安全组
  • 单击Inbound Rules
  • 使用下拉菜单并添加HTTP(端口80)
  • 点击应用并享受

19
他提到他已经在安全组中打开了端口,但这应该就像这样简单... - aaaidan
9
问题没有得到回答,如问题所述,端口80是开放的。 - Pete_ch
4
这确实帮了我们大忙,申请按钮有点隐藏,你需要向下滚动才能找到它。 - Michael Moeller
4
我已经尝试过这个方法,但它仍然无效。 - coolcool1994
6
请检查您的防火墙(正如nsof所述)。 RHEL默认启动iptables。 Windows有Windows防火墙。关闭它们并查看是否是问题所在。如果是,则编辑防火墙以允许80/443端口,并重新启动。 - Andrew
显示剩余8条评论

23

一些快速技巧:

  1. 在您的Windows实例上禁用内置防火墙。
  2. 使用IP地址而不是DNS条目。
  3. 为TCP端口1到65000和源0.0.0.0/0创建安全组。显然,它不能用于生产目的,但它将有助于避免安全组成为问题的来源。
  4. 检查您是否可以实际ping通服务器。这也可能需要进行一些安全组修改。

9
我建议不要在EC2实例上禁用Windows防火墙。但是,Server 2008默认情况下会自动关闭80端口,因此你需要添加(或激活)允许80端口的规则。 - Eight-Bit Guru
1
我应该补充一下,上面的所有步骤都是为了调试问题,但随后你应该恢复到适合你设置的状态。 - Simon at LabSlice-com
2
我同意Jonners的看法,特别是如果它是一个Windows机器:任何可以通过互联网访问的机器都有可能被黑客和脚本小子进行端口扫描,即使只是短暂地裸露在互联网上。 "回滚",然后继续使用可能已经被攻击的服务器在生产中是不可取的。相反,将该实例销毁并重新开始一个新的实例。 - aaaidan
关于“禁用Windows防火墙”,我也有同样的疑问,不知道是否应该这样做。后来,我在亚马逊上找到了一个明确的回答。 “我们建议您禁用Windows防火墙,并使用安全组规则控制对实例的访问。” http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/troubleshooting-windows-instances.html#rdp-issues - foxontherock
我试图使用已转发的端口从EC2实例的公共IP地址访问Flask Web服务器。当Flask服务器运行时,它指示端口已打开,因为nmap -v -p 80 127.0.0.1输出了80/tcp open upnp,而我已使用sudo ufw disable禁用了防火墙。我发现它无法正常工作的原因实际上是因为我没有仔细阅读Flask Web服务器文档,该文档要求使用flask run --host=0.0.0.0运行,其中标志--host=0.0.0.0使其成为“外部可见服务器”https://flask.palletsprojects.com/en/2.2.x/quickstart/。 - Luke Schoen

16
  1. 检查您的实例正在使用哪个安全组。 查看实例所在行的“Security Groups”列的值。这很重要 - 我曾经遇到过类似问题,因为我更改了默认组的规则,但我的实例仍然在 quickstart-1 组中。
  2. 进入安全组选项卡,在入站选项卡中选择“创建新规则”下拉框中的“HTTP”,在源字段中保留“0.0.0.0/0”的设置,然后单击“添加规则”,应用规则更改。

对于第一步,我没有看到安全组列,但在“操作”->“网络”->“更改安全组”下,我可以看到实例所属的组。 - MikeiLL
我忽略了第一步。谢谢。 - Narayan Subedi

12

对于使用Centos(和其他Linux发行版)的用户,您需要确保其防火墙(iptables)允许80端口或任何其他端口。

请参见此处了解如何完全禁用它(仅限于测试目的)。 以及此处了解特定规则。


这就是我的全部了。我忘记它正在运行 :D - Andrew
1
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 是你可以添加到 /etc/sysconfig/iptables 的规则。 - Trefex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接