📄 name-based.xml.de
字号:
<?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: 151405 --><!-- 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>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -