apache2 dynamic vhosts
-
Hallo
ich bin noch recht neu im Server-Business und spiele momentan mit Name based VHosts herum. Ziemlich viel der Apache-Doku hab ich mir schon einverleibt, aber ich bin mir noch unsicher.
a) Kann jemand die Korrektheit hiervon bestätigen?: Apache lädt die VHost-Spezifikationen aus den Dateien. Bei eingehenden Anfragen werden alle durchgegangen und der erste passende genommen.
b) Folgendes Szenario:
Ordnerstruktur: /var/www/clients/client1.com/index.html /var/www/clients/client2.com/index.html ... /some/where/else/special.com/index.html
Mit
client1.com
undwww.client1.com
werden die Dateien aus/var/www/clients/client1.com/
geliefert usw.www.special.com
hat eine Sonderbehandlung. Alles auf der gleichen IP.
Momentan gibt es für jeden Client (und jede special-Seite) einen gesonderten VHost-Eintrag, das funktioniert soweit, ist aber schlecht wartbar. Schön wäre jetzt ein dynamischer VHost-Eintrag, der alle clients auf einmal erschlägt.Wenn die ersten VHost-Einträge auch zuerst gecheckt werden, stelle ich die special-Einträge wohl nach vorne. Ich dachte mir so etwas:
NameVirtualHost *:80 # Special treatment <VirtualHost *:80> ServerName www.example.com ServerAlias example.com *.example.com DocumentRoot /some/where/else/special DirectoryIndex index.php Options -Indexes ErrorLog ${APACHE_LOG_DIR}/error.log </VirtualHost> # All clients <VirtualHost *:80> VirtualDocumentRoot /var/www/clients/%1 DirectoryIndex index.php Options -Indexes ErrorLog ${APACHE_LOG_DIR}/error.log </VirtualHost>
Ich kann es leider nicht testen, weil ich momentan keinen Testserver hab. Kann also jemand was dazu sagen => Sieht das i.O. aus, hab ich was übersehen usw?
c) Dieses Aufteilen mit %1, %2 usw im VirtualDocumentRoot finde ich etwas ungenügend. Z.B. sollen ja
client1.com
undwww.client1.com
auf das selbe Verzeichnis verweisen. Kann man das "www." irgendwie weghauen?
-
Hey
ich hab's geschafft, mir eine Testumgebung aufzusetzen. a) und b) haben sich erledigt, die Clients alle anzusprechen, funktioniert:
<VirtualHost *:80> UseCanonicalName Off VirtualDocumentRoot /var/www/clients/%1+ </VirtualHost>
Nur Problem c) bleibt noch: Rufe ich
www.client1.com/index.html
auf, wird logischerweise/var/www/clients/www.client1.com/index.html
angefordert. Ich will aber nicht für jedenclientX.com
einen Softlinkwww.clientX.com
erstellen, der darauf verweist. Weiss jemand eine Lösung?
-
Nein, Mist, das funktioniert nur halb. Hab den neuesten Apache installiert, aber der scheint verbuggt zu sein
Mit Aufruf von
client3.com/foo
ergibt sich:VirtualDocumentRoot /var/www/clients/%1 => .../client3 OK VirtualDocumentRoot /var/www/clients/%2 => .../com OK VirtualDocumentRoot /var/www/clients/%1_%2 => .../client3_com/foo Murks!! VirtualDocumentRoot /var/www/clients/%1_%2_ => .../client3_com_ OK VirtualDocumentRoot /var/www/clients/%1.%2 => Apache load fail Murks!!