我已经启动了 Amazon EC2 实例(Linux Redhat)...还有 Apache。
但当我尝试:
http://MyPublicHostName
我没有收到任何回复。
我已确保我的安全组允许访问端口 80。
我肯定可以访问端口 22,因为我是通过 ssh 登录到实例的。
在 Amazon EC2 Linux 实例中,当我执行:
$ wget时http://localhost
,我确实得到了响应。这证实了 Apache 和端口 80 确实运行良好。
由于 Amazon 在 VPC 中启动实例,我是否必须在那里执行任何操作...事实上,我甚至无法 ping 该实例,尽管我可以 ssh 到它!
有什么建议吗?
编辑:
请注意,我之前已编辑过 /etc/hosts 文件,以使 389-ds(ldap)安装正常工作。
我的 /etc/hosts 文件如下所示(IP 地址如 wxyz 所示)
127.0.0.1 localhost.localdomain localhost
wxyz ip-wxyz.us-west-1.compute.internal
wxyz ip-wxyz.localdomain
答案1
默认情况下,RedHat 防火墙会阻止某些端口,包括端口 80。这是通过安全组在 Amazon AWS 上配置的防火墙的补充。
您可以自定义防火墙以允许您的 HTTP 流量。
$ sudo system-config-firewall-tui
另一个选择是完全禁用内部防火墙。但是,请确保您知道自己在做什么。
答案2
如果您之前没有接触过安全组设置,它们已被关闭。
- 首先,您需要找到您的服务器被分配到哪个安全组。
- 在实例列表中单击服务器,然后您会看到下面的实例描述
- 右栏是安全组名称。在查看规则链接下,您可以看到打开了哪些端口。默认只有 22。如果没有 80 端口,则需要添加它。
- 接下来您需要添加 80 端口规则。从左侧菜单中打开安全组并单击您的安全组。
- 下面您可以看到有关该团体的详细信息。
- 单击“入站”选项卡并从菜单中选择 HTTP(或添加自定义端口)。如果您需要公共访问,请保留源为 0.0.0.0/0。
- 单击添加规则。注意!您还需要单击应用规则更改,尽管第一次单击后规则已出现在列表中。等待应用的更改在选项卡标题处用星号表示。
- 无需添加传出,因为这是默认打开的(您可以检查是否有规则 ALL 0.0.0.0/0)
就是这样。
答案3
检查您是否iptables
启用了任何规则。
iptables -L
如果服务器上有一些规则,您可以清除它们。
iptables -F
答案4
您可以采取一些措施来排除故障。
1) 由于您无法将基本域指向 CNAME,因此您需要将 www.mypublichostname.com 指向 ec2-wxyz.us-west1.blah。或者(可能是一个更好的主意)将弹性 IP 附加到机器,并将 A 记录和所有其他记录指向 IP 地址。
2) 您提到您正在 VPC 中运行此实例。使用 VPC 安全组,您必须定义传入和传出安全权限。您需要确保端口 80 和 8080 向 0.0.0.0/0(所有人)或您的特定 IP、子网等开放传入和传出。
3) VPC 路由可能稍微复杂一些,具体取决于您如何处理它。如果您使用跳转盒或代理盒来提高安全性,则必须将其设置为传出流量的网关。为此实例分配弹性 IP 可以缓解此问题。
希望这可以帮助。