VirtualHost请求是混合的

我有一个相当繁忙的服务器(每秒约10-15个请求),为多个域提供网页。 今天我才意识到,有时候,“请求”是混合的。 影响是非常小的(可能是0.01%),但肯定是一个问题。

在例子中,我有以下脚本

<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/host1 ServerName myhostname1.com ... ... CustomLog ${APACHE_LOG_DIR}/host1.access.log combined </VirtualHost> 

 <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/host2 ServerName myhostname2.com ... ... CustomLog ${APACHE_LOG_DIR}/host2.access.log combined </VirtualHost> 

但是,有时在host2.access.log中出现的请求应该做到host1,反之,像apache一样会混合请求。 我也看到很多408错误(很明显,不是超时,但是出了点问题)。 这些408错误似乎也来自其他虚拟服务器。

是否有任何已知的问题/错误的Apache可以导致这个问题?

使用apachectl restart时,apache error.log显示:

 [Sat May 09 11:40:11 2015] [notice] SIGHUP received. Attempting to restart apache2: apr_sockaddr_info_get() failed for srv01 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [Sat May 09 11:40:11 2015] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?) [Sat May 09 11:40:11 2015] [notice] Apache/2.2.16 (Debian) PHP/5.3.3-7+squeeze14 with Suhosin-Patch mod_ssl/2.2.16 OpenSSL/0.9.8o configured -- resuming normal operations 

谢谢!

编辑:与其他服务器应该可以访问的文件的“混合”过程也有一个408。

没有意识到任何错误,但是Apache 2.2现在已经变得有些长了。 虽然我们在openssl 0.9.8这个主题上,我注意到你正在使用肯定是太旧了(它不会支持TLS 1.1或1.2,只有0.9.8o及以上 – 你承认支持随着浏览器停止支持SHA-1证书,SHA-2证书很快变得必要)。

无论如何,如果没有ServerName或ServerAlias匹配请求,默认情况下会使用第一个configuration。 所以,如果有人去www.myhostname2.com那么它会返回第一个主机,而不是第二个主机,因为你的configuration中只有myhostname2.com(没有www)这个事实被指定为第二个主机。 如果您需要多个名称,则应该添加ServerAliasconfiguration。 同样,在较旧的操作系统/浏览器上,端口443上的TLS请求也存在问题,但您似乎只是在此讨论http(端口80)。

但是,我不能解释相反(当你期望主机1时去主机2configuration)。

有一个阅读这个页面,其中解释了应该如何设置: http : //httpd.apache.org/docs/2.2/vhosts/name-based.html也有一些意见在底部关于错误的configuration是拿起来取决于顺序,但我不明白为什么这将基于他们提供的有限的信息。