<?xml version="1.0" encoding="UTF-8" ?>
<!-- English Revision: 1565321:1673947 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You 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
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="bind.xml.meta">
<title>An Adressen und Ports binden</title>
<summary>
<p>Konfiguration der vom Apache HTTP Server verwendeten Adressen und
Ports.</p>
</summary>
<seealso><a href="vhosts/">Virtuelle Hosts</a></seealso>
Apache</a></seealso>
<section id="overview">
<title>Überblick</title>
<related>
<modulelist>
<module>core</module>
<module>mpm_common</module>
</modulelist>
<directivelist>
<directive module="core" type="section">VirtualHost</directive>
<directive module="mpm_common">Listen</directive>
</directivelist>
</related>
<p>Beim Start bindet sich der httpd an bestimmte Adressen und Ports
der lokalen Maschine und wartet auf eingehende Anfragen.
Standardmäßig lauscht er an allen Adressen des Systems.
Es kann jeodch notwendig sein, ihm mit zuteilen, nur an bestimmten
Ports zu lauschen oder nur an ausgewählten Adressen, bzw. einer
Kombination aus beidem. Dies wird oft mit der Funktionalität <a
href="vhosts/">virtueller Hosts</a> kombiniert, die bestimmt, wie
der <code>httpd</code> auf verschiedene IP-Adressen, Hostnamen und
Ports reagiert.</p>
<p>Die Direktive <directive module="mpm_common">Listen</directive>
weist den Server an, eingehende Anfragen nur an bestimmten Port(s)
oder Adress/Port-Kombinationen zu akzeptieren. Wenn bei der
<directive module="mpm_common">Listen</directive>-Direktive nur eine
Portnummer angegeben wird, dann lauscht der Server auf allen
Netzwerkinterfaces an dem angegebenen Port. Ist auch eine IP-Adresse
angegeben, dann lauscht der Server an der angegebenen Schnittstelle
auf dem angegebenen Port. Es können mehrere <directive
module="mpm_common">Listen</directive>-Anweisungen verwendet werden,
um eine Reihe von Adressen und Ports anzugeben, an denen gelauscht
werden soll. Der Server wird dann auf Anfragen an jeder der
abgehörten Adressen und Ports antworten.</p>
<p>Um beispielsweise den Server zu veranlassen, auf allen
Netzwerkinterfaces sowohl an Port 80, als auch an Port 8000
Verbindungen zu akzeptieren, geben Sie an:</p>
<example>
<highlight language="config">
Listen 80
Listen 8000
</highlight>
</example>
<p>Um den Server Verbindungen an Port 80 auf einem Netzwerkinterface
akzeptieren zu lassen und an Port 8080 auf einem anderen Interface, geben
Sie an:</p>
<example>
<highlight language="config">
Listen 192.0.2.1:80
Listen 192.0.2.5:8000
</highlight>
</example>
<p>IPv6-Adressen müssen wie im folgenden Beispiel in eckigen
Klammern angegeben werden:</p>
<example>
<highlight language="config">
Listen [2001:db8::a00:20ff:fea7:ccea]:80
</highlight>
</example>
<note type="warning"><p>Sich überlappende <directive
module="mpm_common">Listen</directive>-Direktiven generieren einen
fatalen Fehler, der verhindert, dass der Server hochfährt.</p>
<example>
(48)Address already in use: make_sock: could not bind to address [::]:80
</example>
<p><a
href="http://wiki.apache.org/httpd/CouldNotBindToAddress">Diese
Diskussion im Wiki</a> gibt weitere Tipps zur Fehlerbehebung.</p>
</note>
</section>
<section id="ipv6">
<title>Betrachtung von IPv6-Besonderheiten</title>
<p>Eine wachsende Anzahl von Plattformen implementiert IPv6. Die
<glossary>APR</glossary> unterstützt IPv6 auf den meisten
dieser Plattformen und ermöglicht dem httpd, IPv6-Sockets zu
verwenden und über IPv6 gesendete Anfragen zu behandeln.</p>
<p>Für httpd-Administratoren kommt erschwerend die Frage hinzu,
ob IPv6-Sockets sowohl IPv4- als auch IPv6-Verbindungen handhaben
können. Zum Betrieb von IPv4-Verbindungen an IPv6-Sockets
werden auf IPv6 abgebildete IPv4-Adressen <transnote>so genannete
IPv4-gemappte IPv6-Adressen</transnote> verwendet, welche
standardmäßig auf den meisten Plattformen erlaubt sind.
Unter FreeBSD, NetBSD und OpenBSD jedoch sind sie
standardmäßig deaktiviert, um den Systemgrundsätzen
dieser Plattformen zu entsprechen. Auf Systemen, wo dies
standardmäßig dekativiert ist, kann dieses Verhalten mit
einem speziellen <program>configure</program>-Parameter für den
httpd geändert werden.</p>
<p>Auf der anderen Seite ist die Verwendung von gemappten Adressen
bei einigen Plattformen wie Linux und True64 der
<strong>einzige</strong> Weg, sowohl IPv4 wie auch IPv6 zu
verwenden. Wenn Sie möchten, dass der <code>httpd</code> IPv4-
und IPv6-Verbindungen mit einem Minimum an Sockets behandelt, was
die Verwendung von IPv4-gemappten IPv6-Adressen erfordert, dann
müssen Sie die <program> configure</program>-Option
<code>--enable-v4-mapped</code> angeben.</p>
<p><code>--enable-v4-mapped</code> ist die Voreinstellung auf allen
Plattformen außer FreeBSD, NetBSD und OpenBSD, so dass Ihr
httpd wahrscheinlich so übersetzt wurde.</p>
<p>Geben Sie wie in dem folgenden Beispiel bei allen <directive
module="mpm_common">Listen</directive>-Anweisungen eine IPv4-Adresse
an, wenn Sie möchten, dass Ihr httpd lediglich IPv4-Adressen
behandelt, unabhängig davon, was Ihre Plattform und die APR
unterstützen:</p>
<example>
<highlight language="config">
Listen 0.0.0.0:80
Listen 192.0.2.1:80
</highlight>
</example>
<p>Wenn Sie möchten, dass der httpd IPv4- und IPv6-Verbindungen
an separaten Sockets behandelt (d.h. IPv4-gemappte Adressen
deaktiviert werden sollen) und Ihre Plattform es unterstützt,
dann müssen Sie die <program>configure</program>-Option
<code>--disable-v4-mapped</code> angeben. Unter FreeBSD, NetBSD und
OpenBSD ist <code>--disable-v4-mapped</code> voreingestellt.</p>
</section>
<section id="protocol">
<title>Angabe des Protokolls bei Listen</title>
<p>Das optionale zweite <var>Protokoll</var>-Argument von <directive
module="mpm_common">Listen</directive> ist für die meisten
Konfigurationen gar nicht erforderlich. Wenn nicht angegeben, sind
<code>https</code> für Port 443 und <code>http</code> für
alle anderen Ports die Voreinstellungen. Die Protokollangabe wird
sowohl dazu verwendet, herauszufinden, welches Modul Anfragen
verarbeiten soll, als auch, um protokollspezifische Optimierungen
bei der <directive module="core">AcceptFilter</directive>-Direktive
zu aktivieren.</p>
<p>Sie müssen das Protokoll nur angeben, wenn Sie
ungewöhnliche Ports benutzen, beispielsweise <code>https</code>
auf Port 8443:</p>
<example>
<highlight language="config">
Listen 192.170.2.1:8443 https
</highlight>
</example>
</section>
<section id="virtualhost">
<title>Das Zusammenspiel mit virtuellen Hosts</title>
<p>Die Direktive <directive module="mpm_common">Listen</directive>
implementiert keine virtuellen Hosts - sie teilt dem Hauptserver
lediglich mit, an welchen Adressen und Ports er zu lauschen hat.
Werden keine <directive module="core"
type="section">VirtualHost</directive>-Container verwendet, dann
verhält sich der Server bei allen angenommenen Anfragen gleich.
<directive module="core"
type="section">VirtualHost</directive>-Abschnitte können jedoch
dazu verwendet werden, ein unterschiedliches Verhalten für eine
oder mehrere Adressen und Ports festzulegen. Um einen virtuellen
Host einzurichten, muss dem Server zunächst mitgeteilt werden,
an den betreffenden Adressen oder Ports zu lauschen. Dann sollte ein
<directive module="core"
type="section">VirtualHost</directive>-Abschnitt für die
angebene Adresse und den angegebenen Port erstellt werden, um das
Verhalten dieses virtuellen Hosts festzulegen. Beachten Sie bitte,
dass auf einen <directive module="core"
type="section">VirtualHost</directive> nicht zugegriffen werden
kann, wenn er für eine Adresse und einen Port eingerichtet
wurde, an dem der Server nicht lauscht.</p>
</section>
</manualpage>