| <?xml version='1.0' encoding='UTF-8' ?> |
| <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> |
| <?xml-stylesheet type="text/xsl" href="../style/manual.de.xsl"?> |
| <!-- English Revision: 1.15 --> |
| |
| <!-- |
| Copyright 2003-2004 The Apache Software Foundation |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <manualpage metafile="name-based.xml.meta"> |
| <parentdocument href="./">Virtual Hosts</parentdocument> |
| <title>Unterstützung namensbasierter virtueller Hosts</title> |
| |
| <summary> |
| <p>Das Dokument beschreibt, wann und wie namensbasierte virtuelle Hosts zu |
| verwenden sind.</p> |
| </summary> |
| |
| <seealso><a href="ip-based.html">Unterstützung IP-basierter virtueller |
| Hosts</a></seealso> |
| <seealso><a href="details.html">Tiefergehende Erörterung der Zuweisung |
| virtueller Hosts</a></seealso> |
| <seealso><a href="mass.html">Dynamisch konfiguriertes |
| Massen-Virtual-Hosting</a></seealso> |
| <seealso><a href="examples.html">Beispiele für virtuelle Hosts in typischen |
| Installationen</a></seealso> |
| <seealso><a href="examples.html#serverpath" |
| >ServerPath-Beispielkonfiguration</a></seealso> |
| |
| <section id="namevip"><title>Namensbasierte gegenüber IP-basierten |
| virtuellen Hosts</title> |
| |
| <p>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.</p> |
| |
| <p>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:</p> |
| |
| <ul> |
| <li>Einige antike Clients sind nicht kompatibel zu namensbasierten |
| virtuellen Hosts. Damit namensbasierte virtuelle Hosts funktionieren, |
| muss der Client den HTTP-Host-Header senden. Dies ist bei HTTP/1.1 |
| vorgeschrieben und in allen modernen HTTP/1.0-Browsern als Erweiterung |
| implementiert. Wenn Sie Unterstützung für veraltete Clients |
| benötigen und dennoch namensbasierte virtuelle Hosts verwenden, |
| dann finden Sie eine mögliche Lösung dafür am Ende des |
| Dokuments.</li> |
| |
| <li>Namensbasierte virtuelle Hosts können aufgrund der Natur des |
| SSL-Protokolls nicht mit SSL-gesicherten Servern verwendet werden.</li> |
| |
| <li>Einige Betriebssysteme und Netzwerkanlagen setzen Techniken zum |
| Bandbreiten-Management ein, die nicht zwischen Hosts unterscheiden |
| können, wenn diese nicht auf verschiedenen IP-Adressen liegen.</li> |
| </ul> |
| |
| </section> |
| |
| <section id="using"><title>Die Verwendung von namensbasierten virtuellen Hosts</title> |
| |
| <related> |
| <modulelist> |
| <module>core</module> |
| </modulelist> |
| |
| <directivelist> |
| <directive module="core">DocumentRoot</directive> |
| <directive module="core">NameVirtualHost</directive> |
| <directive module="core">ServerAlias</directive> |
| <directive module="core">ServerName</directive> |
| <directive module="core">ServerPath</directive> |
| <directive module="core" type="section">VirtualHost</directive> |
| </directivelist> |
| </related> |
| |
| <p>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 <directive module="core">NameVirtualHost</directive> |
| eingestellt. Im Normalfall, wenn alle IP-Adressen des Server verwendet |
| werden sollen, können Sie <code>*</code> als Argument für |
| <directive module="core">NameVirtualHost</directive> verwenden. Wenn Sie |
| vorhaben, mehrere Ports zu nutzen (etwa wenn SSL läuft), sollten |
| Sie dem Argument einen Port hinzufügen, wie zum Beispiel |
| <code>*:80</code>. Beachten Sie, |
| dass die Angabe einer IP-Adresse in einer <directive |
| module="core">NameVirtualHost</directive>-Anweisung den Server nicht |
| automatisch an dieser Adresse lauschen läßt. Lesen Sie bitte "<a |
| href="../bind.html">Bestimmen der vom Apache verwendeten Adressen und |
| Ports</a>" für weitere Details. Zusätzlich muss jede hier |
| angegebene IP-Adresse einer Netzwerkkarte des Servers zugeordnet sein.</p> |
| |
| <p>Der nächste Schritt ist die Erstellung eines <directive type="section" |
| module="core">VirtualHost</directive>-Blocks für jeden einzelnen |
| Host, den Sie bedienen wollen. Das Argument der Direktive <directive |
| type="section" module="core">VirtualHost</directive> sollte das gleiche |
| sein wie das Argument der <directive |
| module="core">NameVirtualHost</directive>-Anweisung (d.h. eine IP-Adresse |
| oder <code>*</code> für alle Adressen). Innerhalb jedes <directive |
| type="section" module="core">VirtualHost</directive>-Blocks benötigen |
| Sie zumindestens eine <directive |
| module="core">ServerName</directive>-Anweisung, um zu bestimmen, welcher |
| Host bedient wird, und eine <directive |
| module="core">DocumentRoot</directive>-Anweisung, um anzugeben, wo im |
| Dateisystem der Inhalt des Hosts abgelegt ist.</p> |
| |
| <note><title>Der Hauptserver verschwindet</title> |
| Wenn Sie virtuelle Hosts zu einem bestehenden Webserver hinzufügen, |
| müssen Sie auch einen <directive type="section" |
| module="core">VirtualHost</directive>-Block für den bestehenden Host |
| <transnote>und bisherigen Hauptserver</transnote> erstellen. |
| Die <directive module="core">ServerName</directive>- und |
| <directive module="core">DocumentRoot</directive>-Anweisungen zu diesem |
| virtuellen Host sollten die gleichen sein wie die globalen <directive |
| module="core">ServerName</directive>- und <directive |
| module="core">DocumentRoot</directive>-Anweisungen. Führen Sie diesen |
| virtuellen Host als erstes in der Konfigurationsdatei auf, so dass er als |
| Standard-Host fungiert. |
| </note> |
| |
| <p>Vorausgesetzt, Sie bedienen z.B. die Domain |
| <code>www.domain.tld</code> und möchten den virtuellen Host |
| <code>www.otherdomain.tld</code> hinzufügen, welcher auf |
| die gleiche IP-Adresse zeigt. Dann fügen Sie einfach Folgendes der |
| <code>httpd.conf</code> hinzu:</p> |
| |
| <example> |
| NameVirtualHost *:80<br /> |
| <br /> |
| <VirtualHost *:80><br /> |
| <indent> |
| ServerName www.domain.tld<br /> |
| ServerAlias domain.tld *.domain.tld<br /> |
| DocumentRoot /www/domain<br /> |
| </indent> |
| </VirtualHost><br /> |
| <br /> |
| <VirtualHost *:80><br /> |
| <indent>ServerName www.otherdomain.tld<br /> |
| DocumentRoot /www/otherdomain<br /> |
| </indent> |
| </VirtualHost><br /> |
| </example> |
| |
| <p>Sie können anstelle des <code>*</code> bei den beiden Anweisungen |
| <directive module="core">NameVirtualHost</directive> und <directive |
| type="section" module="core">VirtualHost</directive> 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.</p> |
| |
| <p>Viele Server wollen unter mehr als einem Namen erreichbar sein. Die |
| Direktive <directive module="core">ServerAlias</directive>, die innerhalb |
| des <directive type="section" |
| module="core">VirtualHost</directive>-Abschnittes angegeben wird, |
| ermöglicht dies. Zum Beispiel zeigt die <directive |
| module="core">ServerAlias</directive>-Anweisung in dem ersten <directive |
| type="section" module="core">VirtualHost</directive>-Block oben an, dass die |
| aufgeführten Namen alternative Namen sind, die man verwenden kann, um |
| das gleiche Webangebot zu erreichen:</p> |
| |
| <example> |
| ServerAlias domain.tld *.domain.tld |
| </example> |
| |
| <p>Anfragen für alle Hosts der Domain <code>domain.tld</code> werden |
| von dem virtuellen Host <code>www.domain.tld</code> bedient. Die |
| Platzhalter <code>*</code> und <code>?</code> können anstelle |
| entsprechender Namen verwendet werden. Natürlich können Sie nicht |
| einfach Namen erfinden und diese bei <directive |
| module="core">ServerName</directive> oder <code>ServerAlias</code> |
| 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.</p> |
| |
| <p>Und schlußendlich können Sie die Konfiguration der virtuellen |
| Hosts mittels Angabe weiterer Direktiven innherhalb der <directive |
| type="section" module="core">VirtualHost</directive>-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 <a |
| href="../mod/directive-dict.html#Context">Kontext</a> einer Direktive, um |
| herauszufinden, ob eine bestimmte Direktive zulässig ist. |
| Im <em>Hauptserver-Kontext</em> (außerhalb der <directive |
| type="section" module="core">VirtualHost</directive>-Container) definierte |
| Konfigurationsanweisungen werden nur dann angewendet, wenn sie nicht durch |
| Einstellungen des virtuellen Hosts außer Kraft gesetzt wurden.</p> |
| |
| <p>Wenn nun eine Anfrage eintrifft, prüft der Server zuerst, ob sie eine |
| IP-Adresse verwendet, die der <directive |
| module="core">NameVirtualHost</directive>-Anweisung entspricht. Ist dies der |
| Fall, dann sieht er sich jeden <directive type="section" |
| module="core">VirtualHost</directive>-Abschnitt mit einer passenden |
| IP-Adresse an und versucht den einen zu finden, dessen <directive |
| module="core">ServerName</directive>- oder <directive |
| module="core">ServerAlias</directive>-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 <strong>der erste angegeben virtuelle Host</strong> verwendet, |
| dessen IP-Adresse paßt.</p> |
| |
| <p>Die Folge davon ist, dass der erste aufgeführte virtuelle Host der |
| <em>Standard</em>-Virtual-Host ist. Die <directive |
| module="core">DocumentRoot</directive>-Anweisung des <em>Hauptservers</em> |
| wird <strong>niemals</strong> verwendet, wenn eine IP-Adresse mit einer |
| <directive module="core">NameVirtualHost</directive>-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 <directive type="section" |
| module="core">VirtualHost</directive>-Container und führen diesen als |
| erstes in der Konfigurationsdatei auf.</p> |
| |
| </section> |
| |
| <section id="compat"><title>Kompatibilität mit älteren Browsern</title> |
| |
| <p>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 |
| <cite>primären</cite> namensbasierten virtuellen Hosts).</p> |
| |
| <note><title>Was bedeutet älter?</title> |
| <p>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 <code>Host</code>-Header, so wie er für namensbasierte |
| virtuelle Hosts benäötigt wird.</p> |
| </note> |
| |
| <p>Mit der Direktive <directive module="core">ServerPath</directive> existiert |
| eine mögliche Behelfskonstruktion, obgleich sie etwas schwerfällig |
| ist:</p> |
| |
| <p>Beispielkonfiguration:</p> |
| |
| <example> |
| NameVirtualHost 111.22.33.44<br /> |
| <br /> |
| <VirtualHost 111.22.33.44><br /> |
| <indent> |
| ServerName www.domain.tld<br /> |
| ServerPath /domain<br /> |
| DocumentRoot /web/domain<br /> |
| </indent> |
| </VirtualHost><br /> |
| </example> |
| |
| <p>Was bedeutet das? Es bedeutet, dass eine Anfrage für eine mit |
| "<code>/domain</code>" beginnende URI von dem virtuellen Host |
| <code>www.domain.tld</code> bedient wird. Dies heißt, dass die Seiten |
| für alle Clients unter <code>http://www.domain.tld/domain/</code> |
| abrufbar sind, wenngleich Clients, die den Header <code>Host:</code> |
| senden, auch über <code>http://www.domain.tld/</code> auf sie zugreifen |
| können.</p> |
| |
| <p>Legen Sie einen Link auf der Seite Ihres primären virtuellen Hosts zu |
| <code>http://www.domain.tld/domain/</code>, 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 |
| (<em>z.B.</em> "<code>file.html</code>" oder |
| "<code>../icons/image.gif</code>") zu verwenden oder Links, die das |
| einleitende <code>/domain/</code> enthalten (<em>z.B.</em>, |
| "<code>http://www.domain.tld/domain/misc/file.html</code>" oder |
| "<code>/domain/misc/file.html</code>").</p> |
| |
| <p>Dies erfordert etwas Disziplin, die Befolgung dieser Richtlinien stellt |
| jedoch größtenteils sicher, dass Ihre Seiten mit allen Browsern |
| funktionieren, alten wie neuen.</p> |
| |
| </section> |
| </manualpage> |