无法通过域名访问主机,只能通过 IP 访问:这是 Apache 的错误吗?

无法通过域名访问主机,只能通过 IP 访问:这是 Apache 的错误吗?

我有一台 Windows Server 2003 R2 32 位计算机,运行 Apache 2.4.2、OpenSSL 1.0.1c 和 PHP 5.4.5(通过 mod_fcgid 2.3.7)。此配置工作正常,但随后无法通过其域名(例如)访问该网站,www.example.com但仍可以通过其 IP 地址访问该网站。

特别是,虽然https://www.example.com/产生了连接错误,但http://123.1.2.3/工作正常。是的,首先是 https,然后是 http。

错误和访问日志很干净,也就是说,它们没有显示任何问题的迹象。只有常见的消息,这些消息在网站无法访问时被中断。

经过一番调查,只需重启 Apache 即可解决问题。不幸的是,我没有机会测试它是否https://123.1.2.3/也能正常工作,或者是否http://www.example.com/仍然像往常一样重定向到 https。

那么,有人知道发生了什么吗?在我厌倦 Apache 并放弃它转而使用 Nginx 之前?

编辑:一些日志信息。

最后一行sslerror.log是问题发生前 90 分钟的,所以我想这并不重要。ssl_request.log也没有显示任何有趣的内容:这是问题发生前的最后两行:

[28/Aug/2012:17:47:54 +0200] x.x.x.x TLSv1.1 ECDHE-RSA-AES256-SHA "GET /login HTTP/1.1" 1183
[28/Aug/2012:17:47:45 +0200] y.y.y.y TLSv1 ECDHE-RSA-AES256-SHA "POST /upf HTTP/1.1" 73

前面的几行都一样,看起来也没什么意思,除了问题出现前 30-40 秒的 4 行:

[28/Aug/2012:17:47:14 +0200] z.z.z.z TLSv1 ECDHE-RSA-AES256-SHA "-" -

以下是相应的内容sslaccess.log

z.z.z.z - - [28/Aug/2012:17:47:14 +0200] "-" 408 -
...
x.x.x.x - - [28/Aug/2012:17:47:54 +0200] "GET /login HTTP/1.1" 200 1183
y.y.y.y - - [28/Aug/2012:17:47:45 +0200] "POST /upf HTTP/1.1" 200 73

好像有些连接超时了?

监听端口 80 的虚拟服务器通常会将所有连接重定向到 https 协议,因此access.log在问题出现前 40 分钟没有显示任何内容。error.log显示问题出现前 4 分钟的一些警告:

[Tue Aug 28 17:53:30.921034 2012] [fcgid:warn] [pid 1964:tid 1728] mod_fcgid: process 1852 graceful kill fail, sending SIGKILL

收到很多这样的警告,我猜这是正常的?

答案1

这听起来像是 DNS 问题。当无法通过名称访问网站时,您需要首先确保名称正确解析为服务器的 IP 地址。有很多方法可以做到这一点,例如执行nslookup或甚至只是执行ping名称。只有当您确实获得了正确的地址时,您才应该开始查看 Apache 端的情况。

相关内容