Virtuelle Hosts

Ein virtueller Host ist eine Konfigurationsentität, mit der eine einzelnen Hostmaschine wie mehrere Hostmaschinen auftreten kann.

Ein virtueller Host 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 jedes Webmodul kann nur einem einzigen virtuellen 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 nutzen. Dies ist auch dann der Fall, wenn sich die virtuellen Hosts auf derselben physischen Maschine befinden.

Jeder virtuelle Host hat einen logischen Namen und eine Liste mit einem oder mehreren DNS-Aliasnamen, unter denen er bekannt ist. Bei einem DNS-Aliasnamen handelt es sich um den Namen und die Portnummer des TCP/IP-Hosts zur Anforderung des Servlets, z. B. yourHostName:80. Ist keine Portnummer angegeben, wird Port 80 verwendet.

Bei der Konfiguration virtueller Hosts werden in den Host:Port-Einträgen für die Hostangabe Platzhalterzeichen verwendet.
  • Der Standardaliasname ist *:80, der einen nicht sicheren externern Port verwendet.
  • Aliasnamen im Format *:9080 verwenden den nicht sicheren internen Port.
  • Aliasnamen im Format *:9443 verwenden den sicheren internen Port.
  • Aliasnamen im Format *:443 verwenden den sicheren externen Port.

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 Gruppen virtueller Hosts 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 Gruppe virtueller Hosts und die URI-Gruppe gefunden wurden, wird die Anforderung zur Verarbeitung an die entsprechende Servergruppe gesendet und an den Browser wird eine Antwort zurückgegeben. Wenn keine Gruppe virtueller Hosts oder keine URI-Gruppe gefunden wurde, wird ein Fehler an den Browser zurückgegeben.

Ein virtueller Host ist keinem bestimmten Knoten bzw. keiner bestimmten 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 demselben Knoten bzw. derselben physischen Maschine nicht ausdrücklich voneinander isolieren möchten, werden neben dem Standardhost vermutlich keine weiteren virtuellen Hosts benötigt.

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

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

Die Anforderung http://www.myhost.com/myServlet wird beispielsweise der URL http://WWW.MYHOST.COM/myServlet erfolgreich zugeordnet, aber nicht der URL http://WWW.MYHOST.COM/MYSERVLET oder der URL Www.Myhost.Com/Myservlet. In den letzten beiden Fällen schlagen diese Zuordnungen fehl, weil die Groß-/Kleinschreibung nicht übereinstimmt. Die Anforderung http://www.myhost.com/myservlet wird der URL http://myhost/myservlet bzw. http://myhost:9876/myservlet nicht zugeordnet. Diese Zuordnungen schlagen fehlt, weil sie alphanumerisch nicht korrekt sind.

Sie können 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 anhand eines Aliasnamens anfordern, der nicht dem Aliasnamen eines virtuellen Hosts zugeordnet werden kann, wird im Browser, der zum Absetzen der Anforderung verwendet wird, der Fehler 404 zurückgegeben. Es wird dann eine Nachricht angezeigt, in der angegeben ist, dass der virtuelle Host nicht ermittelt werden konnte.

Für virtuelle Hosts gibt es zwei Zuordnungsgruppen. Bei der Anwendungsimplementierung wird 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 Anwendungsservers dem virtuellen Host zu. Hinsichtlich des Datenflusses 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.some_Host.some_company.com:9080/snoop.
  2. Die Maschine "some_Host" hat Port "9080", der dem eigenständigen Anwendungsserver "Server1" zugeordnet ist.
  3. Server1 prüft die Zuordnungen der virtuellen Hosts, um den virtuellen Host zu ermitteln, der dem Aliasnamen some_Host.some_company.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. Daher wird mit diesem Platzhalter eine Übereinstimmung gefunden. Der virtuelle Host, der die Übereinstimmung definiert, ist "default_host".
  5. Der Anwendungsserver prüft die implementierten Anwendungen, die auf default_host implementiert sind, und sucht das Snoop-Servlet.
  6. Der Anwendungsserver stellt die Anwendung dem Web-Client bereit und der Anforderer kann das Snoop-Servlet verwenden.
Tabelle 1. Aliasnamen für einen virtuellen Host
Virtueller Host Aliasname Portnummer
default_host * 9080
default_host localhost 9080
default_host my_machine 9080
default_host my_machine.my_company.com 9080
default_host localhost 80

Sie können eine beliebige Anzahl von Aliasnamen für einen virtuellen Host verwenden. Sie können sogar überlappende Aliasnamen verwenden, z. B.:

Der Anwendungsserver sucht anhand der in der Web-Client-Adresse angegebenen expliziten Adresse nach einer Übereinstimmung. Möglicherweise löst der Anwendungsserver die Übereinstimmung zu einem anderen Aliasnamen auf, der mit dem Muster übereinstimmt, bevor die Übereinstimmung mit der expliziten Adresse gesucht wird. Durch die Definition eines Aliasnamen an erster Stelle in der Liste der Aliasnamen wird die Suchreihenfolge bei der Suche des Produkts nach einem übereinstimmenden Aliasnamen nicht sichergestellt.

Virtuelle Hosts mit überlappenden Aliasnamen. Angenommen, Sie definieren überlappende Aliasnamen für beide virtuelle Hosts, weil Sie für admin_host versehentlich Port "9080" anstelle von Port "9060" definiert haben:

Wenn Sie denselben Aliasnamen für zwei verschiedene virtuelle Hosts verwenden, kann ein Problem auftreten. Angenommen, Sie haben die Standardanwendung und das Snoop-Servlet auf default_host installiert. Außerdem haben Sie einen anderen virtuellen Host mit dem Namen "admin_host". Auf admin_host ist jedoch nicht die Standardanwendung oder das Snoop-Servlet installiert.

Tabelle 2. Virtuelle Hosts mit überlappenden Aliasnamen.
Virtueller Host Aliasname Portnummer
default_host * 9080
default_host localhost 9080
admin_host * 9060
admin_host my_machine.com 9080

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

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

Dieses Problem ist darauf zurückzuführen, dass die angeforderte Anwendung auf dem ersten virtuellen Host, der einen übereinstimmenden Aliasnamen besitzt, nicht gefunden wurde. Aliasnamen werden dann richtig codiert, wenn ein Aliasnamen in einer eingehenden Anforderung nur einem einzigen virtuellen Host in allen Definitionen virtueller Hosts entspricht. Wenn die 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: 01.12.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=cwlp_virtual_hosts_ovr
Dateiname: cwlp_virtual_hosts_ovr.html