Sönke Tesch: Apache / VirtualHost

Beitrag lesen

  1. Ein DNS-Name, der auf deinen Server zeigt - simplerweise in der Datei "hosts".
    nicht _zwingend_ erforderlich, aber dringlich empfohlen ;-)

Für Virtuelle Hosts, die nicht auf verschiedenen IP-Adressen desselben Interfaces basieren [..] ist ein DNS-Eintrag zwingend erforderlich. Sonst kann der Server die einzelnen Hosts nicht unterscheiden,

Da wage ich mal zu widersprechen: Der Server unterscheidet die Anfragen an namensbasierte Hosts einzig anhand der Host:-Angabe vom Browser, nicht anhand eines wie auch immer gearteten DNS-Eintrages.

Wie sollte er auch anhand eines DNS-Eintrages etwas unterscheiden, wenn sämtliche Namen auf dieselbe Adresse zeigen? Von einer Verbindung ist dem Server lediglich seine eigene (für mehrere Hosts gleiche) IP-Nummer und die der Gegenstelle bekannt. Aus welchem Namen der Client die Nummer für die Verbindung bekommen hat, kann der Server nicht wissen - deshalb Host:.

PS: Demoeintrag für einen Virtuellen Host:
<VirtualHost *>
  ServerName projekt1.test
</VirtualHost>

Das kann funktionieren. Nach meiner bisherigen Erfahrung ist das Konzept der "namenbasierten virtualhosts" aber zuverlässiger.

Das Beispiel oben _ist_ ein namensbasierter Host. Und in dieser Form ist es sogar günstiger als das Beispiel unten, weil es nicht auf eine spezielle IP-Nummer festgelegt ist (s.u.).

Also ungefähr in dieser Form:

NameVirtualHost 192.168.0.1
<VirtualHost 192.168.0.1>
ServerName projekt1.test
</VirtualHost>

Ähm, ich hab sowohl mit der einen als auch mit der anderen Methode mehrere virtuelle Hosts auf einer IP-Adresse sitzen. Was außerhalb der VirtualHost-Direktive noch dafür sorgt, dass das eine oder andere funktioniert,

Die verantwortliche Anweisung für namensbasierte Hosts ist einzig und allein NameVirtualHost.

Beide Blöcken oben arbeiten mit diesem Konzept, der Unterschied ist lediglich, daß der erste auf allen IP-Adressen des Rechners horcht, der untere nur auf der 192.168.0.1. Beim ersten Block hat aber anscheinend jemand vergessen, die NameVirtualHost-Zeile mit zu zitieren.

Gruß,
  soenk.e