silvesterlangen.de

Seite
Menü

virtual Hosts

Warum virtuelle Hosts funktionieren:

Mit der HTTP-Version 1.0 waren keine virtuellen Hosts möglich. Ab der Version 1.1 allerdings schon. Das ist bei allen modernen Browsern integriert. Beim Verbindungsaufbau übergibt der Browser den angefragten Host (bspw. brainworld.lpic) an den HTTPd. Bei unserer Simulation (blauer Bereich) mit netcat (nc) geschieht das mit der Zeile "HOST: www3.brainworld.lpic". Der HTTPd stellt dann aber, obwohl wir www3 angefragt haben, nur den Default-vHost bereit, weil HTTP1.0 den Befehl HOST: nicht unterstützt.

Testen kann man das mit folgenden Zeilen. Zunächst mit HTTP1. Wir bekommen als Antwort die Default-Seite ("dummy") angezeigt.:

 

[root@dmzwww]# nc www3.brainworld.lpic 80
GET / HTTP/1.0
HOST: www3.brainworld.lpic
 
HTTP/1.1 200 OK
Date: Wed, 28 Sep 2016 07:38:09 GMT
Server: Apache/2.4.23 (Unix)
Last-Modified: Tue, 27 Sep 2016 13:41:34 GMT
ETag: "ae-53d7d67221594"
Accept-Ranges: bytes
Content-Length: 174
Connection: close
Content-Type: text/html

<html>
<body>
<center>
<img src="adler.jpg" alt="eine grafik">
<br>
This is the host: dummy.brainworld.lpic
<br>
<h1> Natuerlich funktioniert das! </h1>
</center>
</body>
</html>
 
Das gleiche noch mal, aber dieses mal mit HTTP1.1-Abfrage. Die HOST:-Zeile wird nun erkannt und der richtige vHost zurückgegeben. Man schaue vor allem unten in den ausgegebenen HTML-Code. Dort steht nun die Ausgabe von www3.brainworld.lpic.
 
[root@dmzwww]# nc www3.brainworld.lpic 80
GET / HTTP/1.1
HOST: www3.brainworld.lpic
HTTP/1.1 200 OK
Date: Wed, 28 Sep 2016 07:38:09 GMT
Server: Apache/2.4.23 (Unix)
Last-Modified: Tue, 27 Sep 2016 13:31:47 GMT
ETag: "ae-53d7d67221594"
Accept-Ranges: bytes
Content-Length: 174
Connection: close
Content-Type: text/html

<html>
<body>
<center>
<img src="adler.jpg" alt="eine grafik">
<br>
This is the host: www3.brainworld.lpic
<br>
<h1> Natuerlich funktioniert das! </h1>
</center>
</body>
</html>

 

Wie richtet man einen vHost ein?

Die Konfiguration ist ein Kinderspiel. Ich gehe davon aus, dass der HTTPd bereicht korrekt läuft. Dann macht man folgendes: In der httpd.conf (meist liegt sie unter /etc/apache2/httpd.conf) ganz unten eine weitere Zeile hinzufügen, die da lautet:
Include conf/vhosts.conf
 
Diese Datei mit folgenden Zeilen füllen:
#
# Dummy Website als Fallback. Sie wird NICHT im Nameserver eingetragen!
#
<VirtualHost *:80>
    DocumentRoot "/opt/apache2423/vhosts/dummy"
    ServerName dummy.brainworld.lpic
    <Directory "/opt/apache2423/vhosts/dummy">
        Options Indexes
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

#
# www.brainworld.lpic - Im Nameserver eintragen!
#
<VirtualHost *:80>
    DocumentRoot "/opt/apache2423/vhosts/www"
    ServerName www.brainworld.lpic
    <Directory "/opt/apache2423/vhosts/www">
        Options Indexes
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>
 
#---- weitere vHosts definieren nach Bedarf.
# forum.brainworld.lpic - Im Nameserver eintragen!
#
<VirtualHost *:80>
    DocumentRoot "/opt/apache2423/vhosts/forum"
    ServerName forum.brainworld.lpic
    <Directory "/opt/apache2423/vhosts/forum">
        Options Indexes
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

Grundsätzlich: Jeder "Container" (vHost) beginnt mit einem <VirtualHost> und beendet wird er mit </VirtualHost>. Alles, was dazwischen steht ist Bestandteil des vHosts.

Natürlich müssen die Ordner "vhosts/", "forum/" und "www/" noch angelegt und Inhalte hinterlegt werden. Der bislang laufende Host, der in der httpd.conf definiert ist, wird automatisch deaktiviert. Das geschieht ganz von selbst, wenn man die vHosts angelgt hat. Ein Restart des HTTPd ist natürlich nötig.

« vorige Seite Seitenanfang nächste Seite »
Seite
Menü
Earned Certificates:
LPIC-1 LPIC-1 LPIC-1
Powered by CMSimple | Template by CMSimple | Login