mirror of
https://github.com/apache/httpd.git
synced 2025-06-04 21:42:15 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@103057 13f79535-47bb-0310-9956-ffa450edef68
298 lines
14 KiB
XML
298 lines
14 KiB
XML
<?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.14 -->
|
|
|
|
<!--
|
|
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>
|