Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ îðèãèíàëüíîãî äîêóìåíòà : http://itpm.msu.su/manual/de/vhosts/name-based.html
Äàòà èçìåíåíèÿ: Sat Feb 5 01:50:17 2005
Äàòà èíäåêñèðîâàíèÿ: Mon Oct 1 23:47:21 2012
Êîäèðîâêà:
UnterstÝtzung namensbasierter virtueller Hosts - Apache HTTP Server
<-
Apache > HTTP-Server > Dokumentation > Version 2.0 > Virtual Hosts

UnterstÝtzung namensbasierter virtueller Hosts

VerfÝgbare Sprachen:  de  |  en  |  es  |  ja  |  ko 

Das Dokument beschreibt, wann und wie namensbasierte virtuelle Hosts zu verwenden sind.

Siehe auch

top

Namensbasierte gegenÝber IP-basierten virtuellen Hosts

IP-basierte virtuelle Hosts verwenden die IP-Adresse der Verbindung, um den korrekten virtuellen Host zur Bedienung einer Anfrage zu ermitteln. Folglich benÆtigen Sie eine IP-Adresse fÝr jeden virtuellen Host. Bei der Verwendung von namensbasierten virtuellen Hosts verlÄút sich der Server darauf, dass der Client den Hostnamen als Bestandteil der HTTP-Header angibt. Durch Anwendung dieser Technik kÆnnen sich mehrere verschiedene Hosts die gleiche IP-Adresse teilen.

Die Verwendung von namensbasierten virtuellen Hosts ist gewÆhnlich einfacher. Sie mÝssen lediglich Ihren DNS-Server darauf einstellen, jeden Hostnamen auf die richtige IP-Adresse abzubilden, und dann den Apache HTTP Server so konfigurieren, dass er die verschiedenen Hostnamen erkennt. Namensbasierte virtuelle Hosts entschÄrfen auch den Bedarf an knappen IP-Adressen. Daher sollten Sie namensbasierte virtuelle Hosts verwenden, sofern kein besonderer Grund dafÝr existiert, IP-basierte virtuelle Hosts zu wÄhlen. MÆgliche GrÝnde fÝr die Verwendung IP-basierter virtueller Hosts sind:

top

Die Verwendung von namensbasierten virtuellen Hosts

Um namensbasierte virtuelle Hosts zu verwenden, mÝssen Sie die IP-Adresse (und mÆglicherweise den Port) des Servers benennen, an der Anfragen fÝr die Hosts entgegengenommen werden. Dies wird mit der Direktive NameVirtualHost eingestellt. Im Normalfall, wenn alle IP-Adressen des Server verwendet werden sollen, kÆnnen Sie * als Argument fÝr NameVirtualHost verwenden. Wenn Sie vorhaben, mehrere Ports zu nutzen (etwa wenn SSL lÄuft), sollten Sie dem Argument einen Port hinzufÝgen, wie zum Beispiel *:80. Beachten Sie, dass die Angabe einer IP-Adresse in einer NameVirtualHost-Anweisung den Server nicht automatisch an dieser Adresse lauschen lÄút. Lesen Sie bitte "Bestimmen der vom Apache verwendeten Adressen und Ports" fÝr weitere Details. ZusÄtzlich muss jede hier angegebene IP-Adresse einer Netzwerkkarte des Servers zugeordnet sein.

Der nÄchste Schritt ist die Erstellung eines <VirtualHost>-Blocks fÝr jeden einzelnen Host, den Sie bedienen wollen. Das Argument der Direktive <VirtualHost> sollte das gleiche sein wie das Argument der NameVirtualHost-Anweisung (d.h. eine IP-Adresse oder * fÝr alle Adressen). Innerhalb jedes <VirtualHost>-Blocks benÆtigen Sie zumindestens eine ServerName-Anweisung, um zu bestimmen, welcher Host bedient wird, und eine DocumentRoot-Anweisung, um anzugeben, wo im Dateisystem der Inhalt des Hosts abgelegt ist.

Der Hauptserver verschwindet

Wenn Sie virtuelle Hosts zu einem bestehenden Webserver hinzufÝgen, mÝssen Sie auch einen <VirtualHost>-Block fÝr den bestehenden Host (Anm.d.ý.: und bisherigen Hauptserver) erstellen. Die ServerName- und DocumentRoot-Anweisungen zu diesem virtuellen Host sollten die gleichen sein wie die globalen ServerName- und DocumentRoot-Anweisungen. FÝhren Sie diesen virtuellen Host als erstes in der Konfigurationsdatei auf, so dass er als Standard-Host fungiert.

Vorausgesetzt, Sie bedienen z.B. die Domain www.domain.tld und mÆchten den virtuellen Host www.otherdomain.tld hinzufÝgen, welcher auf die gleiche IP-Adresse zeigt. Dann fÝgen Sie einfach Folgendes der httpd.conf hinzu:

NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>

<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>

Sie kÆnnen anstelle des * bei den beiden Anweisungen NameVirtualHost und <VirtualHost> alternativ eine eindeutige IP-Adresse angeben. Das kann man beispielsweise machen, um einige namensbasierte virtuelle Hosts auf einer IP-Adresse zu betreiben und entweder IP-basierte oder ein anderes Set von namensbasierten virtuellen Hosts auf einer anderen Adresse.

Viele Server wollen unter mehr als einem Namen erreichbar sein. Die Direktive ServerAlias, die innerhalb des <VirtualHost>-Abschnittes angegeben wird, ermÆglicht dies. Zum Beispiel zeigt die ServerAlias-Anweisung in dem ersten <VirtualHost>-Block oben an, dass die aufgefÝhrten Namen alternative Namen sind, die man verwenden kann, um das gleiche Webangebot zu erreichen:

ServerAlias domain.tld *.domain.tld

Anfragen fÝr alle Hosts der Domain domain.tld werden von dem virtuellen Host www.domain.tld bedient. Die Platzhalter * und ? kÆnnen anstelle entsprechender Namen verwendet werden. NatÝrlich kÆnnen Sie nicht einfach Namen erfinden und diese bei ServerName oder ServerAlias angeben, Sie mÝssen zunÄchst Ihren DNS Server entsprechend konfigurieren, dass er diese Namen auf die mit Ihrem Server verknÝpfte IP-Adresse abbildet.

Und schluúendlich kÆnnen Sie die Konfiguration der virtuellen Hosts mittels Angabe weiterer Direktiven innherhalb der <VirtualHost>-Container feineinstellen. Die meisten Direktiven kÆnnen in diesen Containern angegeben werden und verÄndern dann ausschlieúlich die Konfiguration des entsprechenden virtuellen Hosts. PrÝfen Sie den Kontext einer Direktive, um herauszufinden, ob eine bestimmte Direktive zulÄssig ist. Im Hauptserver-Kontext (auúerhalb der <VirtualHost>-Container) definierte Konfigurationsanweisungen werden nur dann angewendet, wenn sie nicht durch Einstellungen des virtuellen Hosts auúer Kraft gesetzt wurden.

Wenn nun eine Anfrage eintrifft, prÝft der Server zuerst, ob sie eine IP-Adresse verwendet, die der NameVirtualHost-Anweisung entspricht. Ist dies der Fall, dann sieht er sich jeden <VirtualHost>-Abschnitt mit einer passenden IP-Adresse an und versucht den einen zu finden, dessen ServerName- oder ServerAlias-Anweisung mit dem gewÝnschten Hostnamen Ýbereinstimmt. Findet er einen, dann verwendet er die Konfiguration dieses Servers. Wird kein passender virtueller Host gefunden, dann wird der erste angegeben virtuelle Host verwendet, dessen IP-Adresse paút.

Die Folge davon ist, dass der erste aufgefÝhrte virtuelle Host der Standard-Virtual-Host ist. Die DocumentRoot-Anweisung des Hauptservers wird niemals verwendet, wenn eine IP-Adresse mit einer NameVirtualHost-Anweisung Ýbereinstimmt. Wenn Sie eine spezielle Konfiguration fÝr Anfragen angeben mÆchten, die keinem bestimmten virtuellen Host entsprechen, packen Sie diese Konfiguration einfach in einen <VirtualHost>-Container und fÝhren diesen als erstes in der Konfigurationsdatei auf.

top

KompatibilitÄt mit Älteren Browsern

Wie zuvor erwÄhnt gibt es einige Clients, die nicht die notwendigen Daten senden, mit denen namensbasierte virtuelle Hosts korrekt funktionieren. Diesen Clients werden stets die Seiten des ersten, fÝr diese IP-Adresse aufgefÝhrten virtuellen Hosts gesendet werden (des primÄren namensbasierten virtuellen Hosts).

Was bedeutet Älter?

Beachten Sie bitte, wenn wir von Älter sprechen, meinen wir auch Älter. Es ist sehr unwahrscheinlich, dass sie einen dieser Browser heutzutage in Verwendung finden werden. Alle aktuellen Browser-Versionen senden den Host-Header, so wie er fÝr namensbasierte virtuelle Hosts benÄÆtigt wird.

Mit der Direktive ServerPath existiert eine mÆgliche Behelfskonstruktion, obgleich sie etwas schwerfÄllig ist:

Beispielkonfiguration:

NameVirtualHost 111.22.33.44

<VirtualHost 111.22.33.44>
ServerName www.domain.tld
ServerPath /domain
DocumentRoot /web/domain
</VirtualHost>

Was bedeutet das? Es bedeutet, dass eine Anfrage fÝr eine mit "/domain" beginnende URI von dem virtuellen Host www.domain.tld bedient wird. Dies heiút, dass die Seiten fÝr alle Clients unter http://www.domain.tld/domain/ abrufbar sind, wenngleich Clients, die den Header Host: senden, auch Ýber http://www.domain.tld/ auf sie zugreifen kÆnnen.

Legen Sie einen Link auf der Seite Ihres primÄren virtuellen Hosts zu http://www.domain.tld/domain/, um die BehelfslÆsung verfÝgbar zu machen. Bei den Seiten der virtuellen Hosts mÝssen Sie dann sicherstellen, entweder auúschlieúlich relative Links (z.B. "file.html" oder "../icons/image.gif") zu verwenden oder Links, die das einleitende /domain/ enthalten (z.B., "http://www.domain.tld/domain/misc/file.html" oder "/domain/misc/file.html").

Dies erfordert etwas Disziplin, die Befolgung dieser Richtlinien stellt jedoch grÆútenteils sicher, dass Ihre Seiten mit allen Browsern funktionieren, alten wie neuen.

VerfÝgbare Sprachen:  de  |  en  |  es  |  ja  |  ko