Apache随机停止提供HTTPS,但HTTP工作正常

Modified on: Sat, 09 Nov 2019 02:40:02 +0800

我们在Windows Server 2012上有这个Apache:

Server version: Apache/2.4.9 (Win32) Apache Lounge VC10 Server built: Mar 17 2014 10:48:43

大多数情况下,它运行良好,但有时(随机,每周cca 3-4次),它停止在端口443上提供HTTPS,但继续在端口80上提供HTTP。当它停止服务时HTTPS,解决问题的唯一方法是重启Apache。

这似乎与此处的问题完全相同:Apache停止响应http请求 - https继续工作,但在我们的例子中,HTTPS停止工作,HTTP是一直有效的。

我们已经启用了trace6级别的详细程度,以获得有关正在发生的事情的一些很好的信息。但是,日志是空的:

... [Sat Mar 21 07:51:50.577373 2015] [ssl:debug] [pid 3356:tid 2540] ssl_engine_io.c(999): [client ...:16529] AH02001: Connection closed to child 137 with standard shutdown (server ...:443) [Sat Mar 21 07:54:21.936742 2015] [ssl:info] [pid 4760:tid 432] AH01914: Configuring server ...:443 for SSL protocol ...

在这个日志中,我们可以看到最后一个请求在07:51:50提供的最后一行然后没有任何内容(我们的内部监控系统每分钟尝试连接一次,所以应该有07:52 :50记录,但它缺失了)。在07:54:21的下一行是在我们的内部监控系统超时并重新启动Apache服务之后。

我们的内部监控是在C#中,其输出是:

...
[Sat Mar 21 07:51:50.577373 2015] [ssl:debug] [pid 3356:tid 2540] ssl_engine_io.c(999): [client ...:16529] AH02001: Connection closed to child 137 with standard shutdown (server ...:443)
[Sat Mar 21 07:54:21.936742 2015] [ssl:info] [pid 4760:tid 432] AH01914: Configuring server ...:443 for SSL protocol
...

我们的httpd-ssl.conf看起来像这样:

System.Net.WebException: The operation has timed out
at System.Net.HttpWebRequest.GetResponse()
at ExecuteServicePageCheck(Object stateInfo)

我们还能做些什么来获取有关正在发生的事情的任何信息吗?我们在任何地方都没有来自Apache的错误消息,甚至在此trace6级别也没有。

请注意,我们确实在HTTP和HTTPS上提供了更多域,并且HTTPS上的所有域都会出现问题。就好像Apache只是默默地关闭了那个端口。

作者:Community,Wapac

最佳答案

在测试了各种配置之后,我们发现了问题,服务器现在运行稳定了7天没有任何问题。

httpd.conf文件中的这个设置修复了问题:

AcceptFilter http none
AcceptFilter https none

以前,我们只有http的AcceptFilter,第二行缺失。

根据Apache文档,Windows上的默认值为:< / p>

AcceptFilter http data
AcceptFilter https data

使用 none 值使用accept()而不是AcceptEx(),并且不会在连接之间回收套接字。

作者:Wapac

相关问答

添加新评论