我在 CentOS 5 上的虚拟机中为测试环境运行 Apache 2.2.3。Apache 正在虚拟机本身上运行并响应请求。如果我在虚拟机上运行“lynx localhost”,我确实会得到我的测试页面。
当我尝试从我的实际 PC 访问 Apache 时,什么也没得到。SSH 可以连接到虚拟机,但 Apache 却不行。我在虚拟机上设置了 iptables 以对任何内容开放,但来自我的 PC 的 HTTP 请求仍然没有返回任何内容(当我通过端口 80 远程登录到虚拟机时,我遇到了超时,我的浏览器只显示“无法打开 172.16.xy 上的页面”)。
我还应该检查什么?
答案1
检查 Apache 正在监听的位置:
$ sudo netstat -nlp | grep apache
tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN 4720/apache2
^^^^^^^^^
如果您看到127.0.0.1
如上所示,则说明您的 Apache 仅监听环回接口,其他机器无法连接到该接口。Listen
在 Apache 配置中查找一条指令,该指令类似于
Listen 127.0.0.1:80
如果您删除127.0.0.1
(因此您只需要Listen 80
)并重新启动 Apache,它应该会监听所有可用的地址。
答案2
我同意@Flup,但你可能还想尝试其他方法 -
您能否使用 Lynx 通过其 iP 地址从 VM 转到 URL,即lynx http://1.2.3.4
应该更仔细地查看 VM 配置/网络。