|
|
| Zeile 16: |
Zeile 16: |
|
| |
|
| </noinclude> | | </noinclude> |
|
| |
| = TMP =
| |
|
| |
| == Namensbasierte/IP-basierte virtuelle Hosts ==
| |
| IP-basierte virtuelle Hosts verwenden die IP-Adresse der Verbindung, um den richtigen virtuellen Host zu ermitteln.
| |
| * Daher müssen Sie für jeden Host eine eigene IP-Adresse haben.
| |
|
| |
| Beim namensbasierten virtuellen Hosting verlässt sich der Server darauf, dass der Client den Hostnamen als Teil der HTTP-Header meldet.
| |
| * Mit dieser Technik können sich viele verschiedene Hosts dieselbe IP-Adresse teilen.
| |
|
| |
| Namensbasiertes virtuelles Hosting ist in der Regel einfacher, da Sie nur Ihren DNS-Server konfigurieren müssen, um jeden Hostnamen der richtigen IP-Adresse zuzuordnen, und dann den Apache HTTP Server so konfigurieren müssen, dass er die verschiedenen Hostnamen erkennt.
| |
| * Namensbasiertes virtuelles Hosting entlastet auch die Nachfrage nach knappen IP-Adressen.
| |
| * Daher sollten Sie namenbasiertes virtuelles Hosting verwenden, es sei denn, Sie verwenden Geräte, die ausdrücklich IP-basiertes Hosting verlangen.
| |
| * Historische Gründe für IP-basiertes virtuelles Hosting, die auf der Kundenunterstützung beruhen, sind für einen Allzweck-Webserver nicht mehr anwendbar.
| |
|
| |
| Namensbasiertes virtuelles Hosting baut auf dem IP-basierten Algorithmus zur Auswahl virtueller Hosts auf, was bedeutet, dass die Suche nach dem richtigen Servernamen nur zwischen virtuellen Hosts erfolgt, die die beste IP-basierte Adresse haben.
| |
|
| |
| === Interne Verarbeitung ===
| |
| ; Wie der Server den richtigen namensbasierten virtuellen Host auswählt
| |
| Es ist wichtig zu wissen, dass der erste Schritt bei der namensbasierten Auflösung virtueller Hosts die IP-basierte Auflösung ist.
| |
| * Bei der namensbasierten Auflösung virtueller Hosts wird nur der am besten geeignete namensbasierte virtuelle Host ausgewählt, nachdem die Kandidaten auf die beste IP-basierte Übereinstimmung eingegrenzt wurden.
| |
| * Die Verwendung eines Platzhalters (*) für die IP-Adresse in allen VirtualHost-Direktiven macht diese IP-basierte Zuordnung irrelevant.
| |
|
| |
| Wenn eine Anfrage eintrifft, findet der Server das am besten (am spezifischsten) passende <code><VirtualHost>-Argument</code> auf der Grundlage der von der Anfrage verwendeten IP-Adresse und des Ports.
| |
| * Wenn es mehr als einen virtuellen Host gibt, der diese Kombination aus Adresse und Port enthält, vergleicht der Apache die Direktiven <code>ServerName</code> und <code>ServerAlias</code> mit dem Servernamen in der Anfrage.
| |
|
| |
| Wenn Sie die Direktive <code>ServerName</code> bei einem namensbasierten virtuellen Host weglassen, wird der Server standardmäßig einen vollqualifizierten Domänennamen (FQDN) verwenden, der vom System-Hostnamen abgeleitet ist.
| |
| * Dieser implizit festgelegte Servername kann zu einer kontraintuitiven Anpassung des virtuellen Hosts führen und wird daher nicht empfohlen.
| |
|
| |
| == Namensbasierter vhost (IP/Port) ==
| |
| ; Der standardmäßige namensbasierte vhost für eine Kombination aus IP und Anschluss
| |
| Wenn kein passender ServerName oder ServerAlias in der Menge der virtuellen Hosts gefunden wird, die die spezifischste übereinstimmende IP-Adress- und Port-Kombination enthält, dann wird '''der erste aufgelistete virtuelle Host''' verwendet, der damit übereinstimmt.
| |
|
| |
| == Verwendung ==
| |
| {| class="wikitable"
| |
| !Verwandte Module
| |
| !Verwandte Richtlinien
| |
| |-
| |
| |
| |
| * <code>Kernstück</code>
| |
| |
| |
| * <code>DocumentRoot</code>
| |
| * <code>ServerAlias</code>
| |
| * <code>ServerName</code>
| |
| * <code><VirtualHost></code>
| |
| |}
| |
|
| |
| Der erste Schritt besteht darin, einen <code><VirtualHost>-Block</code> für jeden verschiedenen Host zu erstellen, den Sie bedienen möchten.
| |
| * Innerhalb jedes <code><VirtualHost>-Blocks</code> benötigen Sie mindestens eine <code>ServerName-Direktive</code>, um zu bestimmen, welcher Host bedient wird, und eine <code>DocumentRoot-Direktive</code>, um anzugeben, wo im Dateisystem der Inhalt für diesen Host gespeichert ist.
| |
|
| |
| === Haup-Server verschwindet ===
| |
| Jede Anfrage, die nicht mit einem vorhandenen <code><VirtualHost></code> übereinstimmt, wird von der globalen Serverkonfiguration behandelt, unabhängig von Hostname oder ServerName.
| |
|
| |
| Wenn Sie einen namensbasierten virtuellen Host zu einem bestehenden Server hinzufügen und die Argumente des virtuellen Hosts mit bereits vorhandenen IP- und Port-Kombinationen übereinstimmen, werden die Anfragen nun von einem expliziten virtuellen Host bearbeitet.
| |
| * In diesem Fall ist es in der Regel ratsam, einen virtuellen Standard-Hostmit einem <code>ServerName</code> zu erstellen, der mit dem des Basisservers übereinstimmt.
| |
| * Neue Domänen mit derselben Schnittstelle und demselben Port, die jedoch separate Konfigurationen erfordern, können dann als nachfolgende (nicht standardmäßige) virtuelle Hosts hinzugefügt werden.
| |
|
| |
| === ServerName-Vererbung ===
| |
| Am besten ist es, in jedem namensbasierten virtuellen Host immer explizit einen <code>ServerName</code> anzugeben.
| |
|
| |
| Wenn ein <code>VirtualHost</code> keinen <code>Servernamen</code> angibt, wird ein Servername von der Basisserverkonfiguration geerbt.
| |
| * Wenn kein Servername global angegeben wurde, wird ein solcher beim Start durch Reverse-DNS-Auflösung der ersten Abhöradresse ermittelt.
| |
| * In jedem Fall beeinflusst dieser geerbte Servername die Auflösung von namensbasierten virtuellen Hosts, so dass es am besten ist, in jedem namensbasierten virtuellen Host immer explizit einen <code>Servernamen</code> anzugeben.
| |
|
| |
| Angenommen, Sie bedienen die Domain www.example.com <code>und</code> möchten den virtuellen Host <code>other.example.com</code> hinzufügen, der auf dieselbe IP-Adresse verweist.
| |
| * Dann fügen Sie einfach Folgendes zu <code>httpd.conf</code> hinzu:
| |
|
| |
| <syntaxhighlight lang="apache" line copy>
| |
| <VirtualHost *:80>
| |
| # Dieser erstgenannte virtuelle Host ist auch der Standard für *:80
| |
| ServerName www.example.com
| |
| ServerAlias example.com
| |
| DocumentRoot "/www/domain"
| |
| </VirtualHost>
| |
| </syntaxhighlight>
| |
|
| |
| <syntaxhighlight lang="apache" line copy>
| |
| <VirtualHost *:80>
| |
| ServerName other.example.com
| |
| DocumentRoot "/www/otherdomain"
| |
| </VirtualHost>
| |
| </syntaxhighlight>
| |
|
| |
| Sie können alternativ eine explizite IP-Adresse anstelle des <code>*</code> in den <code><VirtualHost>-Direktiven</code> angeben.
| |
| * Sie können dies zum Beispiel tun, um einige namensbasierte virtuelle Hosts auf einer IP-Adresse und entweder IP-basierte oder eine andere Gruppe namensbasierter virtueller Hosts auf einer anderen Adresse zu betreiben.
| |
|
| |
| Viele Server wollen unter mehr als einem Namen erreichbar sein.
| |
| * Dies ist mit der <code>ServerAlias-Direktive</code>möglich, die innerhalb des <code><VirtualHost>-Abschnitts</code> platziert wird.
| |
| * Im ersten <code><VirtualHost>-Block</code> oben zeigt die <code>ServerAlias-Direktive</code> beispielsweise an, dass die aufgeführten Namen andere Namen sind, unter denen die gleiche Website aufgerufen werden kann:
| |
|
| |
| <syntaxhighlight lang="apache" line copy>
| |
| ServerAlias example.com *.example.com
| |
| </syntaxhighlight>
| |
|
| |
| dann werden Anfragen für alle Hosts in der Domäne <code>example.com</code> vom virtuellen Host <code>www.example.com</code> bedient.
| |
| * Die Platzhalterzeichen <code>*</code> und <code>?</code> können verwendet werden, um Namen abzugleichen.
| |
| * Natürlich können Sie nicht einfach Namen erfinden und sie in <code>ServerName</code> oder <code>ServerAlias</code> einfügen.
| |
| * Sie müssen zuerst Ihren DNS-Server richtig konfigurieren, um diese Namen einer IP-Adresse zuzuordnen, die mit Ihrem Server verbunden ist.
| |
|
| |
| Namensbasierte virtuelle Hosts für den am besten übereinstimmenden Satz von <code><virtualhost>s</code>werden in der Reihenfolge verarbeitet, in der sie in der Konfiguration erscheinen.
| |
| * Der erste übereinstimmende <code>ServerName</code> oder <code>ServerAlias</code> wird verwendet, wobei es keine unterschiedliche Rangfolge für Platzhalter gibt (auch nicht für ServerName vs. ServerAlias).
| |
|
| |
| Die vollständige Liste der Namen in der <code>VirtualHost-Direktive</code>wird genauso behandelt wie ein (nicht wildcard) <code>ServerAlias</code>.
| |
|
| |
| Schließlich können Sie die Konfiguration der virtuellen Hosts feinabstimmen, indem Sie andere Direktiven in den <code><VirtualHost>-Containern</code> platzieren.
| |
| * Die meisten Direktiven können in diesen Containern platziert werden und ändern dann nur die Konfiguration des betreffenden virtuellen Hosts.
| |
| * Um herauszufinden, ob eine bestimmte Direktive erlaubt ist, prüfen Sie den Kontext der Direktive.
| |
| * Konfigurationsdirektiven, die im ''Hauptserverkontext'' (außerhalb eines <code><VirtualHost>-Containers</code>) gesetzt werden, werden nur dann verwendet, wenn sie nicht durch die Einstellungen des virtuellen Hosts überschrieben werden.
| |
Apache/HTTP/Vhost/Namensbasiert
topic - Beschreibung
Beschreibung
Anhang
Siehe auch
Links
Weblinks