Виртуальный хост Apache обслуживает виртуальный хост по умолчанию для порта 443, несмотря на совпадение имени сервера для порта 80

Виртуальный хост Apache обслуживает виртуальный хост по умолчанию для порта 443, несмотря на совпадение имени сервера для порта 80

У меня есть два сервера, которые являются клонами друг друга, за исключением нескольких незначительных изменений конфигурации. Я получаю неожиданное поведение при попытке посетить их поддомены monitoring.*.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 на обоих серверах следующая:

<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меня перенаправляют на сервер защищенного порта по умолчанию http**s**.monitoring.staging.comи обслуживают там приложение .010.staging.com

Производственный сервер работает так, как и ожидалось, и обслуживает мой инструмент мониторинга приложений.

Как я уже сказал, оба этих сервера изначально представляли собой клоны основного образа с очень незначительными изменениями конфигурации — при необходимости я могу описать конкретные изменения.

Может ли кто-нибудь предположить, почему я наблюдаю такое поведение?

Спасибо


Обновления:

Это конфигурация Vhost для мониторинга:

<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>

решение1

Я решил эту проблему, изменив 000-defaultконфигурацию на этапе подготовки следующим образом:

<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>

Изменение ServerName с www.production.com на staging.com

Я не знаюпочемуэто решило проблему, поэтому я буду более чем счастлив дать правильный ответ любому, кто сможет объяснить поведение и то, что делает Apache.

Связанный контент