尽pipe服务器名称与端口80匹配,但Apache虚拟主机为端口443提供默认虚拟主机

我有两个相互克隆的服务器,除了一些小的configuration更改外。 当我尝试访问他们的监控。com子域时,我收到了一些意外的行为。

在每台服务器上运行./apache2ctl -S提供以下内容:

登台服务器

 VirtualHost configuration: wildcard NameVirtualHosts and _default_ servers: *:443 is a NameVirtualHost default server 010.staging.com (/etc/apache2/sites-enabled/010:2) port 443 namevhost 010.staging.com (/etc/apache2/sites-enabled/010:2) port 443 namevhost 011.staging.com (/etc/apache2/sites-enabled/011:2) port 443 namevhost 013.staging.com (/etc/apache2/sites-enabled/013:2) *:80 is a NameVirtualHost default server www.production.com (/etc/apache2/sites-enabled/000-default:1) port 80 namevhost www.production.com (/etc/apache2/sites-enabled/000-default:1) port 80 namevhost monitoring.staging.com (/etc/apache2/sites-enabled/monitoring:1) Syntax OK 

生产服务器

 VirtualHost configuration: wildcard NameVirtualHosts and _default_ servers: *:443 is a NameVirtualHost default server de.production.com (/etc/apache2/sites-enabled/de:2) port 443 namevhost de.production.com (/etc/apache2/sites-enabled/de:2) port 443 namevhost uk.production.com (/etc/apache2/sites-enabled/uk:2) port 443 namevhost us.production.com (/etc/apache2/sites-enabled/us:2) port 443 namevhost www.production.com (/etc/apache2/sites-enabled/production:2) *:80 is a NameVirtualHost default server www.production.com (/etc/apache2/sites-enabled/000-default:1) port 80 namevhost www.production.com (/etc/apache2/sites-enabled/000-default:1) port 80 namevhost monitoring.production.com (/etc/apache2/sites-enabled/monitoring:1) Syntax OK 

在两台服务器上,000-default的configuration如下所示

 <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName www.production.com DocumentRoot /home/user/apache/ RewriteEngine on RewriteLog /var/log/apache2/log RewriteLogLevel 1 RewriteCond %{REQUEST_URI}/ !^(/server-status).*$ RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=301,L] </VirtualHost> 

我遇到的问题是,当我访问http://monitoring.staging.com我被redirect到http**s**.monitoring.staging.com和被服务的应用程序010.staging.com默认安全端口服务器。

生产服务器的行为和预期一样,并为我的应用程序监视工具提供服务

正如我所说,这些服务器都是作为主映像的克隆而开始的,只有很less的configuration更改 – 如果需要,我可以描述特定的更改。

任何人都可以冒任何猜测为什么我看到这种行为?

谢谢


更新:

这是用于监视的Vhostconfiguration:

 <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName monitoring.staging.com DocumentRoot /var/www/munin <Directory /var/www/munin> Options FollowSymLinks AllowOverride None </Directory> # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel notice CustomLog /var/log/apache2/access.log combined ErrorLog /var/log/apache2/error.log ServerSignature On </VirtualHost> 

而对于实际服务的应用程序:

 <IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin webmaster@localhost ServerName 010.staging.com RewriteLog /var/log/apache2/ssl.log RewriteRule ^/$ /010/home.htm [R=301,L] RewriteRule ^/(?!010/|static/|mgt).*$ /010/home.htm [R=301,L] SSLCertificateKeyFile /etc/apache2/ssl/010/apache.key SSLCertificateFile /etc/apache2/ssl/010/apache.crt SSLCACertificateFile /etc/apache2/ssl/010/apache-ca.crt </VirtualHost> </IfModule> 

我解决了这个问题,通过更改000-defaultconfiguration上的阶段如下:

 <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName staging.com DocumentRoot /home/user/apache/ RewriteEngine on RewriteLog /var/log/apache2/log RewriteLogLevel 1 RewriteCond %{REQUEST_URI}/ !^(/server-status).*$ RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=301,L] </VirtualHost> 

更改为从www.production.com到staging.com的ServerName

我不知道为什么这个问题解决了,所以我非常乐意给任何能解释行为和Apache做什么的人提供一个正确的答案。