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