1 <?xml version='1.0' encoding='UTF-8' ?>
2 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.de.xsl"?>
4 <!-- English Revision: 420990:1673945 (outdated) -->
7 Licensed to the Apache Software Foundation (ASF) under one or more
8 contributor license agreements. See the NOTICE file distributed with
9 this work for additional information regarding copyright ownership.
10 The ASF licenses this file to You under the Apache License, Version 2.0
11 (the "License"); you may not use this file except in compliance with
12 the License. You may obtain a copy of the License at
14 http://www.apache.org/licenses/LICENSE-2.0
16 Unless required by applicable law or agreed to in writing, software
17 distributed under the License is distributed on an "AS IS" BASIS,
18 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 See the License for the specific language governing permissions and
20 limitations under the License.
23 <manualpage metafile="name-based.xml.meta">
24 <parentdocument href="./">Virtual Hosts</parentdocument>
25 <title>Unterstützung namensbasierter virtueller Hosts</title>
28 <p>Das Dokument beschreibt, wann und wie namensbasierte virtuelle Hosts zu
32 <seealso><a href="ip-based.html">Unterstützung IP-basierter virtueller
34 <seealso><a href="details.html">Tiefergehende Erörterung der Zuweisung
35 virtueller Hosts</a></seealso>
36 <seealso><a href="mass.html">Dynamisch konfiguriertes
37 Massen-Virtual-Hosting</a></seealso>
38 <seealso><a href="examples.html">Beispiele für virtuelle Hosts in typischen
39 Installationen</a></seealso>
40 <seealso><a href="examples.html#serverpath"
41 >ServerPath-Beispielkonfiguration</a></seealso>
43 <section id="namevip"><title>Namensbasierte gegenüber IP-basierten
44 virtuellen Hosts</title>
46 <p>IP-basierte virtuelle Hosts verwenden die IP-Adresse der Verbindung, um den
47 korrekten virtuellen Host zur Bedienung einer Anfrage zu ermitteln. Folglich
48 benötigen Sie eine IP-Adresse für jeden virtuellen Host. Bei der
49 Verwendung von namensbasierten virtuellen Hosts verläßt sich der
50 Server darauf, dass der Client den Hostnamen als Bestandteil der HTTP-Header
51 angibt. Durch Anwendung dieser Technik können sich mehrere verschiedene
52 Hosts die gleiche IP-Adresse teilen.</p>
54 <p>Die Verwendung von namensbasierten virtuellen Hosts ist gewöhnlich
55 einfacher. Sie müssen lediglich Ihren DNS-Server darauf einstellen,
56 jeden Hostnamen auf die richtige IP-Adresse abzubilden, und dann den Apache
57 HTTP Server so konfigurieren, dass er die verschiedenen Hostnamen erkennt.
58 Namensbasierte virtuelle Hosts entschärfen auch den Bedarf an
59 knappen IP-Adressen. Daher sollten Sie namensbasierte virtuelle Hosts
60 verwenden, sofern kein besonderer Grund dafür existiert, IP-basierte
61 virtuelle Hosts zu wählen. Mögliche Gründe für die
62 Verwendung IP-basierter virtueller Hosts sind:</p>
65 <li>Einige antike Clients sind nicht kompatibel zu namensbasierten
66 virtuellen Hosts. Damit namensbasierte virtuelle Hosts funktionieren,
67 muss der Client den HTTP-Host-Header senden. Dies ist bei HTTP/1.1
68 vorgeschrieben und in allen modernen HTTP/1.0-Browsern als Erweiterung
69 implementiert. Wenn Sie Unterstützung für veraltete Clients
70 benötigen und dennoch namensbasierte virtuelle Hosts verwenden,
71 dann finden Sie eine mögliche Lösung dafür am Ende des
74 <li>Namensbasierte virtuelle Hosts können aufgrund der Natur des
75 SSL-Protokolls nicht mit SSL-gesicherten Servern verwendet werden.</li>
77 <li>Einige Betriebssysteme und Netzwerkanlagen setzen Techniken zum
78 Bandbreiten-Management ein, die nicht zwischen Hosts unterscheiden
79 können, wenn diese nicht auf verschiedenen IP-Adressen liegen.</li>
84 <section id="using"><title>Die Verwendung von namensbasierten virtuellen Hosts</title>
92 <directive module="core">DocumentRoot</directive>
93 <directive module="core">NameVirtualHost</directive>
94 <directive module="core">ServerAlias</directive>
95 <directive module="core">ServerName</directive>
96 <directive module="core">ServerPath</directive>
97 <directive module="core" type="section">VirtualHost</directive>
101 <p>Um namensbasierte virtuelle Hosts zu verwenden, müssen Sie die
102 IP-Adresse (und möglicherweise den Port) des Servers benennen, an
103 der Anfragen für die Hosts entgegengenommen werden. Dies wird mit
104 der Direktive <directive module="core">NameVirtualHost</directive>
105 eingestellt. Im Normalfall, wenn alle IP-Adressen des Server verwendet
106 werden sollen, können Sie <code>*</code> als Argument für
107 <directive module="core">NameVirtualHost</directive> verwenden. Wenn Sie
108 vorhaben, mehrere Ports zu nutzen (etwa wenn SSL läuft), sollten
109 Sie dem Argument einen Port hinzufügen, wie zum Beispiel
110 <code>*:80</code>. Beachten Sie,
111 dass die Angabe einer IP-Adresse in einer <directive
112 module="core">NameVirtualHost</directive>-Anweisung den Server nicht
113 automatisch an dieser Adresse lauschen läßt. Lesen Sie bitte "<a
114 href="../bind.html">Bestimmen der vom Apache verwendeten Adressen und
115 Ports</a>" für weitere Details. Zusätzlich muss jede hier
116 angegebene IP-Adresse einer Netzwerkkarte des Servers zugeordnet sein.</p>
118 <p>Der nächste Schritt ist die Erstellung eines <directive type="section"
119 module="core">VirtualHost</directive>-Blocks für jeden einzelnen
120 Host, den Sie bedienen wollen. Das Argument der Direktive <directive
121 type="section" module="core">VirtualHost</directive> sollte das gleiche
122 sein wie das Argument der <directive
123 module="core">NameVirtualHost</directive>-Anweisung (d.h. eine IP-Adresse
124 oder <code>*</code> für alle Adressen). Innerhalb jedes <directive
125 type="section" module="core">VirtualHost</directive>-Blocks benötigen
126 Sie zumindestens eine <directive
127 module="core">ServerName</directive>-Anweisung, um zu bestimmen, welcher
128 Host bedient wird, und eine <directive
129 module="core">DocumentRoot</directive>-Anweisung, um anzugeben, wo im
130 Dateisystem der Inhalt des Hosts abgelegt ist.</p>
132 <note><title>Der Hauptserver verschwindet</title>
133 Wenn Sie virtuelle Hosts zu einem bestehenden Webserver hinzufügen,
134 müssen Sie auch einen <directive type="section"
135 module="core">VirtualHost</directive>-Block für den bestehenden Host
136 <transnote>und bisherigen Hauptserver</transnote> erstellen.
137 Die <directive module="core">ServerName</directive>- und
138 <directive module="core">DocumentRoot</directive>-Anweisungen zu diesem
139 virtuellen Host sollten die gleichen sein wie die globalen <directive
140 module="core">ServerName</directive>- und <directive
141 module="core">DocumentRoot</directive>-Anweisungen. Führen Sie diesen
142 virtuellen Host als erstes in der Konfigurationsdatei auf, so dass er als
143 Standard-Host fungiert.
146 <p>Vorausgesetzt, Sie bedienen z.B. die Domain
147 <code>www.domain.tld</code> und möchten den virtuellen Host
148 <code>www.otherdomain.tld</code> hinzufügen, welcher auf
149 die gleiche IP-Adresse zeigt. Dann fügen Sie einfach Folgendes der
150 <code>httpd.conf</code> hinzu:</p>
153 NameVirtualHost *:80<br />
155 <VirtualHost *:80><br />
157 ServerName www.domain.tld<br />
158 ServerAlias domain.tld *.domain.tld<br />
159 DocumentRoot /www/domain<br />
161 </VirtualHost><br />
163 <VirtualHost *:80><br />
164 <indent>ServerName www.otherdomain.tld<br />
165 DocumentRoot /www/otherdomain<br />
167 </VirtualHost><br />
170 <p>Sie können anstelle des <code>*</code> bei den beiden Anweisungen
171 <directive module="core">NameVirtualHost</directive> und <directive
172 type="section" module="core">VirtualHost</directive> alternativ eine
173 eindeutige IP-Adresse angeben. Das kann man beispielsweise machen, um
174 einige namensbasierte virtuelle Hosts auf einer IP-Adresse zu betreiben und
175 entweder IP-basierte oder ein anderes Set von namensbasierten virtuellen
176 Hosts auf einer anderen Adresse.</p>
178 <p>Viele Server wollen unter mehr als einem Namen erreichbar sein. Die
179 Direktive <directive module="core">ServerAlias</directive>, die innerhalb
180 des <directive type="section"
181 module="core">VirtualHost</directive>-Abschnittes angegeben wird,
182 ermöglicht dies. Zum Beispiel zeigt die <directive
183 module="core">ServerAlias</directive>-Anweisung in dem ersten <directive
184 type="section" module="core">VirtualHost</directive>-Block oben an, dass die
185 aufgeführten Namen alternative Namen sind, die man verwenden kann, um
186 das gleiche Webangebot zu erreichen:</p>
189 ServerAlias domain.tld *.domain.tld
192 <p>Anfragen für alle Hosts der Domain <code>domain.tld</code> werden
193 von dem virtuellen Host <code>www.domain.tld</code> bedient. Die
194 Platzhalter <code>*</code> und <code>?</code> können anstelle
195 entsprechender Namen verwendet werden. Natürlich können Sie nicht
196 einfach Namen erfinden und diese bei <directive
197 module="core">ServerName</directive> oder <code>ServerAlias</code>
198 angeben, Sie müssen zunächst Ihren DNS Server entsprechend
199 konfigurieren, dass er diese Namen auf die mit Ihrem Server verknüpfte
200 IP-Adresse abbildet.</p>
202 <p>Und schlußendlich können Sie die Konfiguration der virtuellen
203 Hosts mittels Angabe weiterer Direktiven innherhalb der <directive
204 type="section" module="core">VirtualHost</directive>-Container
205 feineinstellen. Die meisten Direktiven können in diesen Containern
206 angegeben werden und verändern dann ausschließlich die
207 Konfiguration des entsprechenden virtuellen Hosts. Prüfen Sie den <a
208 href="../mod/directive-dict.html#Context">Kontext</a> einer Direktive, um
209 herauszufinden, ob eine bestimmte Direktive zulässig ist.
210 Im <em>Hauptserver-Kontext</em> (außerhalb der <directive
211 type="section" module="core">VirtualHost</directive>-Container) definierte
212 Konfigurationsanweisungen werden nur dann angewendet, wenn sie nicht durch
213 Einstellungen des virtuellen Hosts außer Kraft gesetzt wurden.</p>
215 <p>Wenn nun eine Anfrage eintrifft, prüft der Server zuerst, ob sie eine
216 IP-Adresse verwendet, die der <directive
217 module="core">NameVirtualHost</directive>-Anweisung entspricht. Ist dies der
218 Fall, dann sieht er sich jeden <directive type="section"
219 module="core">VirtualHost</directive>-Abschnitt mit einer passenden
220 IP-Adresse an und versucht den einen zu finden, dessen <directive
221 module="core">ServerName</directive>- oder <directive
222 module="core">ServerAlias</directive>-Anweisung mit dem gewünschten
223 Hostnamen übereinstimmt. Findet er einen, dann verwendet er die
224 Konfiguration dieses Servers. Wird kein passender virtueller Host gefunden,
225 dann wird <strong>der erste angegeben virtuelle Host</strong> verwendet,
226 dessen IP-Adresse paßt.</p>
228 <p>Die Folge davon ist, dass der erste aufgeführte virtuelle Host der
229 <em>Standard</em>-Virtual-Host ist. Die <directive
230 module="core">DocumentRoot</directive>-Anweisung des <em>Hauptservers</em>
231 wird <strong>niemals</strong> verwendet, wenn eine IP-Adresse mit einer
232 <directive module="core">NameVirtualHost</directive>-Anweisung
233 übereinstimmt. Wenn Sie eine spezielle Konfiguration für Anfragen
234 angeben möchten, die keinem bestimmten virtuellen Host entsprechen,
235 packen Sie diese Konfiguration einfach in einen <directive type="section"
236 module="core">VirtualHost</directive>-Container und führen diesen als
237 erstes in der Konfigurationsdatei auf.</p>
241 <section id="compat"><title>Kompatibilität mit älteren Browsern</title>
243 <p>Wie zuvor erwähnt gibt es einige Clients, die nicht die notwendigen
244 Daten senden, mit denen namensbasierte virtuelle Hosts korrekt
245 funktionieren. Diesen Clients werden stets die Seiten des ersten, für
246 diese IP-Adresse aufgeführten virtuellen Hosts gesendet werden (des
247 <cite>primären</cite> namensbasierten virtuellen Hosts).</p>
249 <note><title>Was bedeutet älter?</title>
250 <p>Beachten Sie bitte, wenn wir von älter sprechen, meinen wir auch
251 älter. Es ist sehr unwahrscheinlich, dass sie einen dieser Browser
252 heutzutage in Verwendung finden werden. Alle aktuellen Browser-Versionen
253 senden den <code>Host</code>-Header, so wie er für namensbasierte
254 virtuelle Hosts benäötigt wird.</p>
257 <p>Mit der Direktive <directive module="core">ServerPath</directive> existiert
258 eine mögliche Behelfskonstruktion, obgleich sie etwas schwerfällig
261 <p>Beispielkonfiguration:</p>
264 NameVirtualHost 111.22.33.44<br />
266 <VirtualHost 111.22.33.44><br />
268 ServerName www.domain.tld<br />
269 ServerPath /domain<br />
270 DocumentRoot /web/domain<br />
272 </VirtualHost><br />
275 <p>Was bedeutet das? Es bedeutet, dass eine Anfrage für eine mit
276 "<code>/domain</code>" beginnende URI von dem virtuellen Host
277 <code>www.domain.tld</code> bedient wird. Dies heißt, dass die Seiten
278 für alle Clients unter <code>http://www.domain.tld/domain/</code>
279 abrufbar sind, wenngleich Clients, die den Header <code>Host:</code>
280 senden, auch über <code>http://www.domain.tld/</code> auf sie zugreifen
283 <p>Legen Sie einen Link auf der Seite Ihres primären virtuellen Hosts zu
284 <code>http://www.domain.tld/domain/</code>, um die Behelfslösung
285 verfügbar zu machen. Bei den Seiten der virtuellen Hosts müssen
286 Sie dann sicherstellen, entweder außschließlich relative Links
287 (<em>z.B.</em> "<code>file.html</code>" oder
288 "<code>../icons/image.gif</code>") zu verwenden oder Links, die das
289 einleitende <code>/domain/</code> enthalten (<em>z.B.</em>,
290 "<code>http://www.domain.tld/domain/misc/file.html</code>" oder
291 "<code>/domain/misc/file.html</code>").</p>
293 <p>Dies erfordert etwas Disziplin, die Befolgung dieser Richtlinien stellt
294 jedoch größtenteils sicher, dass Ihre Seiten mit allen Browsern
295 funktionieren, alten wie neuen.</p>