home *** CD-ROM | disk | FTP | other *** search
- <?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.23.2.5 -->
-
- <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. 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 *<br />
- <br />
- <VirtualHost *><br />
- <indent>
- ServerName www.domain.tld<br />
- ServerAlias domain.tld *.domain.tld<br />
- DocumentRoot /www/domain<br />
- </indent>
- </VirtualHost><br />
- <br />
- <VirtualHost *><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>
-
-
-