好的。我遇到了一个非常奇怪的问题。我最近刚刚从 2.2.17 更新到 Apache 2.4.2,主要是为了尝试让基于名称的 SSL VirtualHosts 工作(尽管它们应该在 2.2.17 上工作)。服务器是 Win2008 R2(根据定义是 x64),运行 PHP 5.4.3 和 MySQL 5.1.40(我知道已经过时了)。
当我启动服务器时,它最初运行良好。响应所有请求,VirtualHosts 都按顺序运行。但是,经过一段不确定的时间(大部分时间似乎只需要几分钟,但有时需要几个小时),它停止响应常规 HTTP 请求(在任何 VirtualHost 上)。HTTPS 继续工作。日志中没有错误,当我尝试连接时,访问日志中没有任何内容。
由于此错误的间歇性,我很难找到其根源。删除所有基于 SSL 的 VirtualHosts 后,稳定性似乎有所提高(12 小时后仍可响应 HTTP 请求)。不过,这可能只是巧合。
SSL VirtualHost 的全部内容如下,以防出现问题。
<VirtualHost *:443>
DocumentRoot "C:\Server\www\virtualhosts\mysite.net"
ErrorLog logs/ssl.mysite.net-error_log
CustomLog logs/ssl.mysite.net-access_log common env=!dontlog
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile C:/Server/bin/apache/apache2.4.2/conf/ssl/server.crt
SSLCertificateKeyFile C:/Server/bin/apache/apache2.4.2/conf/ssl/server.key
SSLCertificateChainFile C:/Server/bin/apache/Apache2.4.2/conf/ssl/sub.class1.server.ca.pem
SSLCACertificateFile C:/Server/bin/apache/Apache2.4.2/conf/ssl/ca.pem
</VirtualHost>
知道我遗漏了什么吗?
答案1
我们已经解决了我们服务器上的一个非常相似的问题。请参阅Apache 随机停止提供 HTTPS 服务,但 HTTP 运行正常
httpd.conf 文件中的这个设置解决了该问题:
AcceptFilter http none
AcceptFilter https none
答案2
打开Log调试,查看错误日志。
http://httpd.apache.org/docs/2.4/mod/core.html#loglevel
如果请求没有得到满足,那么一定存在某些问题,至少是存在某些段错误通知。
此外,您还可以使用“ab”实用程序在处理特定类型的请求后重新生成错误
http://httpd.apache.org/docs/2.4/programs/ab.html
作为最后的手段,您可以从命令行启动 httpd,并使用 apache2 二进制文件的某些开关强制调试模式/前台。不可能没有任何内容进入日志。您在其上提供哪种应用程序,是 fastcgi 还是某些 .net 桥?
另外,您说的“停止响应常规 HTTP 请求”到底是什么意思?浏览器中是否出现 503 错误,或者什么都没有出现/连接失败?