mir ist sozusagen die Pflege einer größeren Applikation in die Hände gefallen. Diese wird mittels Apache und Tomcat gehostet, wobei es in meinem Problem nur um den Apache geht.
Verbindungen werden bei uns bisher größtenteils von Apache einfach an Tomcat weitergeleitet und vom Tomcat verarbeitet. Dies passiert mit der folgenden Konfiguration (anonymisiert):
- Code: Select all
<VirtualHost *:80>
ServerAdmin mailadresse@adresse.de
DocumentRoot /var/www
ServerName www.domain1.de
ServerAlias *.domain1.de
SetEnvIf Request_URI "/home/*" no-jk
JkMount /* ajp13_worker
</VirtualHost>
<VirtualHost *:80>
ServerAdmin mailadresse@adresse.de
DocumentRoot /var/www
ServerName www.domain2.de
ServerAlias *.domain2.de
SetEnvIf Request_URI "/home/*" no-jk
JkMount /* ajp13_worker
</VirtualHost>
<VirtualHost *:80>
ServerAdmin mailadresse@adresse.de
DocumentRoot /home/images
ServerName www.domain3.de
ServerAlias *.domain3.de
</VirtualHost>
<VirtualHost 192.168.43.38:443>
ServerAdmin mailadresse@adresse.de
DocumentRoot /var/www
ServerName www.domain2.de
ServerAlias *.domain2.de
SSLEngine on
SSLCertificateFile /home/sslZertifikate/x_domain2_de.crt
SSLCertificateKeyFile /home/sslZertifikate/x_domain2_de.key
SetEnvIf Request_URI "/home/*" no-jk
JkMount /* ajp13_worker
</VirtualHost>
<VirtualHost 192.168.43.14:443>
ServerAdmin mailadresse@adresse.de
DocumentRoot /var/www
ServerName www.domain1.de
ServerAlias *.domain1.de
SSLEngine on
SSLCertificateFile /home/sslZertifikate/x_domain1_de.crt
SSLCertificateKeyFile /home/sslZertifikate/x_domain1_de.key
SetEnvIf Request_URI "/home/*" no-jk
JkMount /* ajp13_worker
</VirtualHost>
Wie man sehen kann, werden neben den 2 normalen Domains auch Bilder von dieser Apache-Instanz ausgeliefert. Ich wollte diese Auslieferung über eine dritte Domäne jetzt anpassen und diese auch von derselben Domain serven lassen. Dazu habe ich folgende Einträge zu dieser Datei hinzugefügt:
- Code: Select all
<VirtualHost *:80>
ServerAdmin mailadresse@adresse.de
DocumentRoot /home/images
ServerName images.domain1.de
</VirtualHost>
<VirtualHost *:80>
ServerAdmin mailadresse@adresse.de
DocumentRoot /home/images
ServerName images.domain2.de
</VirtualHost>
Starte ich nun den Apache (ohne Fehlermeldungen) neu, kann ich unter images.domain1.de und images.domain2.de die Bilderverzeichnisse abrufen, während alle weiteren Subdomains weiterhin an Tomcat weitergereicht werden. Leider stoße ich mit dieser Konfiguration, angewendet auf HTTPS, auf Probleme. Füge ich jetzt das HTTPS-Äquivalent dieser beiden Einträge hinzu
- Code: Select all
<VirtualHost *:443>
ServerAdmin mailadresse@adresse.de
DocumentRoot /home/images
ServerName images.domain1.de
SSLEngine on
SSLCertificateFile /home/sslZertifikate/x_domain1_de.crt
SSLCertificateKeyFile /home/sslZertifikate/x_domain1_de.key
</VirtualHost>
<VirtualHost *:443>
ServerAdmin mailadresse@adresse.de
DocumentRoot /home/images
ServerName images.domain2.de
SSLEngine on
SSLCertificateFile /home/sslZertifikate/x_domain2_de.crt
SSLCertificateKeyFile /home/sslZertifikate/x_domain2_de.key
</VirtualHost>
kommt es beim Start des Apache zu folgender Fehlermeldung:
[warn] _default_ VirtualHost overlap on port 443, the first has precedence
[warn] _default_ VirtualHost overlap on port 443, the first has precedence
Natürlich hat der Apache damit Recht. Aber warum tritt das Problem nicht auch bei derselben Konfiguration über Port 80/HTTP auf? Dort scheint diese Art der Konfiguration hervorragend zu funktionieren.
Leider ist mein Wissen über die Konfiguration von Apache derzeit noch begrenzt und obwohl ich meine Englischkenntnisse als ziemlich gut einschätze, halte ich die Apache-Dokumentation für ziemlich undurchsichtig (benutzt in den relevanten Abschnitten zu VirtualHost und NameVirtualHost ziemlich viel weitere Apache-Lingo, die Erklärung bedarf).
Hat jemand eine Idee?
Danke,
Thomas