Der virtuelle Apache-Host dient als Standard-Vhost für Port 443, trotz Übereinstimmung des Servernamens mit Port 80.

Der virtuelle Apache-Host dient als Standard-Vhost für Port 443, trotz Übereinstimmung des Servernamens mit Port 80.

Ich habe zwei Server, die bis auf ein paar kleine Konfigurationsänderungen Klone voneinander sind. Beim Versuch, ihre Subdomänen „monitoring.*.com“ zu besuchen, tritt unerwartetes Verhalten auf.

Die Ausführung ./apache2ctl -Sauf jedem Server führt zu Folgendem:

Staging-Server

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

Produktionsserver

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

Die Konfiguration von 000-default ist auf beiden Servern wie folgt

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

Mein Problem besteht darin, dass http://monitoring.staging.comich beim Besuch auf die Seite umgeleitet werde und die App für den standardmäßigen sicheren Portserver http**s**.monitoring.staging.combereitgestellt bekomme .010.staging.com

Der Produktionsserver verhält sich wie erwartet und stellt mein Anwendungsüberwachungstool bereit.

Wie gesagt begannen diese beiden Server als Klone eines Master-Image mit nur sehr geringfügigen Konfigurationsänderungen. Bei Bedarf kann ich spezifische Änderungen beschreiben.

Kann irgendjemand eine Vermutung wagen, warum dieses Verhalten bei mir auftritt?

Danke


Aktualisierung:

Dies ist die Vhost-Konfiguration für die Überwachung:

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

Und für die App, die tatsächlich bereitgestellt wird:

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

Antwort1

Ich habe dies gelöst, indem ich die 000-defaultKonfiguration beim Staging wie folgt geändert habe:

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

Die Änderung betrifft den Servernamen von www.production.com zu staging.com.

Ich weiß nichtWarumDadurch wurde das Problem behoben, und ich gebe jedem, der das Verhalten und die Vorgehensweise von Apache erklären kann, gern ein Häkchen für die richtige Antwort.

verwandte Informationen