Virtuelle Hosts

Ein virtueller Host ist eine Konfigurationsentität, die einer einzelnen Hostmaschine die Möglichkeit bietet, wie mehrere Hostmaschinen aufzutreten. Er verwaltet eine Liste mit MIME-Typen (Multipurpose Internet Mail Extensions), die er verarbeiten kann. Sie können einen virtuellen Host einem oder mehreren Webmodulen zuordnen, aber jedem Webmodul kann nur ein einziger virtueller Host zugeordnet werden. Ressourcen, die einem virtuellen Host zugeordnet sind, können mit anderen Ressourcen, die einem anderen virtuellen Host zugeordnet sind, keine Daten gemeinsam benutzen, selbst wenn die virtuellen Hosts auf demselben physischen System installiert sind.

Jeder virtuelle Host besitzt einen logischen Namen und eine Liste mit einem oder mehreren DNS-Aliasnamen, über die er erkannt wird. Ein DNS-Aliasname gibt den Namen und die Portnummer des TCP/IP-Host zur Anforderung des Servlets an, z. B. Ihr_Hostname:80. Wenn kein Port angegeben wurde, wird Port 80 verwendet.

Bei der Konfiguration virtueller Hosts werden in den Host:Port-Einträgen für die Hostangabe Platzhalterzeichen verwendet.

Eine Clientanforderung für ein Servlet, eine JSP-Datei (JavaServer Pages) oder eine zugehörige Ressource enthält einen DNS-Aliasnamen und einen Uniform Resource Indicator (URI), der für diese Ressource eindeutig ist. Wenn eine Clientanforderung für ein Servlet, eine JSP-Datei oder eine zugehörige Ressource empfangen wird, wird der DNS-Aliasname mit der Liste aller bekannten virtuellen Hostgruppen verglichen, um den richtigen virtuellen Host zu finden. Der URI wird mit der Liste aller bekannten URI-Gruppen verglichen, um die richtige URI-Gruppe zu finden. Wenn die virtuelle Hostgruppe und die URI-Gruppe gefunden werden, wird die Anforderung zur Verarbeitung an die entsprechende Servergruppe gesendet und an den Browser wird eine Antwort zurückgegeben. Falls keine virtuelle Hostgruppe oder URI-Gruppe gefunden wird, wird ein Fehler an den Browser zurückgegeben.

Ein virtueller Host ist keinem bestimmten Knoten (Maschine) zugeordnet. Er ist eher eine Konfiguration als ein "echtes Objekt", was auch erklärt, warum Sie ihn zwar erstellen, aber nicht starten oder stoppen können. Wenn Sie einen Anwendungsserver zum ersten Mal starten, wird automatisch ein virtueller Standardhost mit dem Namen "default_host" konfiguriert. Falls Sie Ressourcen auf einem Knoten (einer physischen Maschine) nicht ausdrücklich voneinander isolieren möchten, werden zusätzlich zum Standardhost vermutlich keine virtuellen Hosts benötigt.

Die DNS-Aliasnamen für den virtuellen Standardhost werden konfiguriert als *:80 und *:9080, wobei Port 80 für den HTTP-Server und Port 9080 für den HTTP-Transport des Standardservers verwendet wird. Der virtuelle Standardhost enthält allgemeine Aliasnamen, z. B. die IP-Adresse der Maschine, den Kurzhostnamen und den vollständig qualifizierten Hostnamen. Einer dieser Aliasnamen enthält den ersten Teil des Pfads für den Zugriff auf eine Ressource, z. B. ein Servlet. Beispielsweise wird der Aliasname localhost:80 in der Anforderung http://localhost:80/mein_Servlet verwendet.

Wenn Sie den virtuellen Hosts einen lokalen Host (localhost) hinzufügen, werden der Hostname und die IP-Adresse der lokalen Hostmaschine zur Aliastabelle hinzugefügt. Auf diese Weise wird einem fernen Benutzer der Zugriff auf die Administrationskonsole ermöglicht.

Mit der Administrationskonsole können Sie DNS-Aliasnamen hinzufügen oder ändern, wenn Sie andere Ports als die Standardports verwenden möchten. Wenn Sie einen DNS-Aliasnamen ändern, müssen Sie die Konfiguration des Web-Server-Plug-ins erneut generieren. Sie können die Administrationskonsole verwenden, um die erneute Generierung des Plug-in einzuleiten.

Bewährtes Verfahren Bewährtes Verfahren: Beispiel für Situationen, in denen zusätzliche Aliasnamen hinzugefügt oder die Standardaliasnamen geändert werden müssen:
  • Die HTTP-Serverinstanz wird an einem anderen Port als 80 ausgeführt. Fügen Sie jedem der Aliasnamen die richtige Portnummer hinzu. Ändern Sie beispielsweise IhrHost in IhrHost:8000.
  • Sie möchten HTTPS-Anforderungen absetzen, die Secure Sockets Layer (SSL) verwenden. Für HTTPS-Anforderungen müssen Sie jedem der Aliasnamen den Port 443 hinzufügen. Port 443 ist der Standardport für SSL-Anforderungen.
  • Ihre Web-Server-Instanz empfängt SSL-Anforderungen an einem anderen Port als 443. In diesem Fall müssen Sie jedem der Aliasnamen diese Portnummer hinzufügen.
  • Sie möchten einen anderen Port als den Standardport (9080) für den Anwendungsserver verwenden.
  • Sie möchten andere Aliasnamen verwenden, die nicht aufgelistet sind.
bprac

Wenn Sie eine Ressource anfordern, versucht das Produkt, die Anforderung einem Aliasnamen des definierten virtuellen Hosts zuzuordnen. In dem Teil http://Host:Port/ des virtuellen Hosts wird die Groß-/Kleinschreibung nicht beachtet, wohl aber in dem nachfolgenden URL. Die Übereinstimmung für den URL muss alphanumerisch exakt sein. Unterschiedliche Portnummern werden als unterschiedliche Aliasnamen behandelt.

Beispielsweise wird die Anforderung http://www.meinhost.com/meinServlet dem URL http://WWW.MEINHOST.COM/meinServlet erfolgreich zugeordnet, aber nicht dem URL http://WWW.MEINHOST.COM/MEINSERVLET oder dem URL Www.MeinHost.Com/Meinservlet. In den letzten beiden Fällen schlagen die Zuordnungen aufgrund der fehl, weil die Groß-/Kleinschreibung nicht übereinstimmt. Die Anforderung http://www.meinhost.com/meinservlet wird dem URL http://meinhost/meinservlet bzw. http://meinhost:9876/meinservlet nicht zugeordnet. Diese Zuordnungen schlagen fehlt, weil sie alphanumerisch nicht korrekt sind.

Sie können hierbei Platzhalterzeichen für Aliasnamen nach Port angeben. Außerdem können Sie angeben, dass alle gültigen Kombinationen aus Hostnamen und Adresse an einem bestimmten Port einem bestimmten virtuellen Host zugeordnet werden sollen.

Wenn Sie eine Ressource über einen Aliasnamen anfordern, der nicht dem Aliasnamen eines virtuellen Host zugeordnet werden kann, wird im Browser, der zum Absetzen der Anforderung verwendet wird, der Fehler 404 zurückgegeben. Es erscheint dann die Nachricht, dass der virtuelle Host nicht ermittelt werden konnte.

Für virtuelle Hosts treten zwei Zuordnungsgruppen auf. Bei der Anwendungsimplementierung wir einer Anwendung ein virtueller Host zugeordnet. Definitionen virtueller Hosts ordnen die Netzadresse der Maschine und den HTTP-Transport bzw. die Web-Server-Port-Zuordnung des Anwendungsserver dem virtuellen Host zu. Hinsichtlich des Datenflusses von der Web-Client-Anforderung für das Snoop-Servlet werden die folgenden Aktionen ausgeführt:
  1. Der Web-Client fragt nach dem Snoop-Servlet unter der Webadresse http://www.ein_Host.eine_Firma.com:9080/snoop.
  2. Für die Maschine ein_Host wurde der Port 9080 dem eigenständigen Anwendungsserver server1 zugeordnet.
  3. server1 prüft die Zuordnungen der virtuellen Hosts, um den virtuellen Host zu ermitteln, der dem Aliasnamen ein_Host.eine_Firma.com:9080 zugeordnet ist.
  4. Der Anwendungsserver stellt fest, dass kein expliziter Aliasname für diese DNS-Zeichenfolge vorhanden ist. Eine Platzhalterzuordnung für Hostname * an Port 9080 ist jedoch vorhanden. Das ist eine Übereinstimmung. Der virtuelle Host, der die Übereinstimmung definiert, ist default_host.
  5. Der Anwendungsserver prüft die implementierten Anwendungen auf default_host und sucht das Servlet snoop.
  6. Der Anwendungsserver stellt die Anwendung dem Web-Client bereit, und der Requester kann das Snoop-Servlet verwenden.
Tabelle 1. Aliase für einen virtuellen Host. Sie können eine beliebige Anzahl von Aliasnamen für einen virtuellen Host verwenden. Sie können selbst überlappende Aliasnamen verwenden, z. B.:
Virtueller Host Alias Port
Standardhost (default_host) * 9080
localhost 9080
meine_Maschine 9080
meine_Maschine.meine_Firma.com 9080
localhost 80

Der Application Server sucht anhand der in der Web-Client-Adresse angegebenen expliziten Adresse nach einer Übereinstimmung. Möglicherweise löst der Application Server die Übereinstimmung zu einem anderen Aliasnamen auf, der mit dem Muster übereinstimmt, bevor die Übereinstimmung mit der expliziten Adresse gesucht wird. Wenn Sie in der Liste der Aliasnamen zuerst lediglich einen Aliasnamen definieren, bedeutet dies nicht, dass die Suchordnung garantiert ist, wenn das Produkt nach einem übereinstimmenden Aliasnamen sucht.

Wenn Sie denselben Aliasnamen für zwei verschiedene virtuelle Hosts verwenden, kann ein Problem auftreten. Gehen Sie z. B. davon aus, dass Sie die Standardanwendung und das Servlet snoop auf dem default_host installiert haben. Sie haben auch einen anderen virtuellen Host, admin_host. Auf admin_host ist jedoch nicht die Standardanwendung oder das Servlet snoop installiert.

Tabelle 2. Virtuelle Hosts mit überlappenden Aliasen. Angenommen, Sie definieren überlappende Aliasnamen für beide virtuellen Hosts, weil Sie für den admin_host versehentlich Port 9080 anstelle von Port 9060 definiert haben:
Virtueller Host Alias Port
Standardhost (default_host) * 9080
localhost 9080
admin_host * 9060
meine_Maschine.com 9080

Angenommen, eine Web-Client-Anforderung für http://meine_Maschine.com:9080/snoop wird empfangen.

Wenn der Anwendungsserver die Anforderung *:9080 zuordnet, wird die Anwendung von default_host bereitgestellt. Wenn der Anwendungsserver die Anforderung meine_Maschine.com:9080 zuordnet, kann die Anwendung nicht gefunden werden. In dem Browser, der die Anforderung absetzt, erscheint der Fehler 404. Es erscheint dann die Nachricht, dass der virtuelle Host nicht ermittelt werden konnte.

Dieses Problem ergibt sich daraus, dass die angeforderte Anwendung in dem ersten virtuellen Host, der einen übereinstimmenden Aliasnamen besitzt, nicht gefunden wurde. Die richtige Methode zur Codierung von Aliasnamen besteht darin, dass der Aliasname in einer eingehenden Anforderung mit nur einem virtuellen Host in allen Definitionen virtueller Hosts übereinstimmt. Wenn der URL mit mehreren virtuellen Hosts übereinstimmt, tritt das soeben beschriebene Problem auf.


Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=ccws_vhost
Dateiname:ccws_vhost.html