我在 AWS VPC 内的 Ubuntu 12.04 上设置了 Apache。Apache 服务器位于可通过 NAT 访问的私有子网中。我能够按预期从服务器本身访问端口 80 上的 Apache(即使使用 IP 地址而不是 127.0.0.1)。当我尝试从远程服务器(在本例中为 NAT)访问服务器时,Apache 会显示 404 错误。这似乎不是网络问题。我能够使用 telnet 连接到 80 上的 Apache 服务器。我正在使用 wget 来测试我是否可以从 Apache 服务器检索文档(也显示 404)。
Apache 配置为“Listen 80”,虚拟主机也是“*:80”。有人知道是什么限制了远程主机的访问吗?
谢谢。
编辑:我在同一个子网中启动了另一个 Ubuntu 12.04 实例(相同的 AMI),安装了 Apache,一切似乎都按预期运行,这意味着我可以从本地主机、同一子网中的远程主机以及 NAT 实例访问 index.html。这两个都是使用“sudo apt-get install apache2”的普通 Apache 安装。我现在正在尝试检测任何差异。顺便说一句,两个实例上都没有运行 iptables。
答案1
如果您尝试通过 DNS 名称连接到站点,则应在 VirtualHost 部分中设置“ServerName”指令。我上次使用多个虚拟主机安装 Apache 时也遇到了类似的问题。
答案2
事实证明,iptables 中有一个 NAT 条目将 80 转发到 8080(tomcat)。它没有显示“sudo iptables --list”。我刷新了表,它开始工作了。
感谢所有提供帮助的人。