windows-server-2012 – Apache随机停止提供HTTPS,但HTTP工作正常

前端之家收集整理的这篇文章主要介绍了windows-server-2012 – Apache随机停止提供HTTPS,但HTTP工作正常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们在 Windows Server 2012上有这个Apache:

服务器版本:Apache / 2.4.9(Win32)
Apache Lounge VC10 Server内置:2014年3月17日10:48:43

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

这似乎与此处的问题完全相同:Apache stops responding to http requests — https continues to work除了在我们的情况下,它是HTTPS停止工作,HTTP是一直有效的.

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

  1. ...
  2. [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)
  3. [Sat Mar 21 07:54:21.936742 2015] [ssl:info] [pid 4760:tid 432] AH01914: Configuring server ...:443 for SSL protocol
  4. ...

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

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

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

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

  1. <VirtualHost _default_:443>
  2. ServerName ...:443
  3. ServerAlias www.....com
  4. DocumentRoot ${US_ROOTF_WWW}/.../www/www
  5. SSLEngine On
  6. SSLProtocol All -SSLv2 -SSLv3
  7. SSLHonorCipherOrder on
  8. # Prefer PFS,allow TLS,avoid SSL,for IE8 on XP still allow 3DES
  9. SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+AESGCM EECDH EDH+AESGCM EDH+aRSA HIGH !MEDIUM !LOW !aNULL !eNULL !LOW !RC4 !MD5 !EXP !PSK !SRP !DSS"
  10. # Prevent CRIME/BREACH compression attacks
  11. SSLCompression Off
  12. # Commit to HTTPS only traffic for at least 180 days
  13. Header add Strict-Transport-Security "max-age=15552000"
  14. SSLCertificateFile ${US_ROOTF}/core/apache2/server_certs/....crt
  15. SSLCertificateKeyFile ${US_ROOTF}/core/apache2/server_certs/....key
  16. SSLCertificateChainFile ${US_ROOTF}/core/apache2/server_certs/....ca-bundle
  17. CustomLog "logs/.../www/access.ssl.%Y.%m.%d.log" combined
  18. ErrorLog "logs/.../www/error.ssl.log"
  19. LogLevel trace6
  20. </VirtualHost>

我们还有什么办法可以获得有关正在发生的事情的任何信息吗?我们没有任何来自Apache的错误消息,甚至在这个trace6级别也没有.

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

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

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

  1. AcceptFilter http none
  2. AcceptFilter https none

以前,我们只有HTTP的AcceptFilter,第二行丢失了.

根据Apache documentation,Windows上的默认值为:

  1. AcceptFilter http data
  2. AcceptFilter https data

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

猜你在找的Windows相关文章