Hôtes virtuels

Un hôte virtuel est une configuration permettant à une seule machine hôte de se comporter comme plusieurs.

Un hôte virtuel gère une liste des types MIME (Multipurpose Internet Mail Extensions) qu'il traite. Vous pouvez associer un hôte virtuel à un ou plusieurs modules Web, mais chaque module Web ne peut être associé qu'à un seul hôte virtuel. Les ressources associées à un hôte virtuel ne peuvent pas partager de données avec des ressources associées à un autre hôte virtuel, même si ces hôtes virtuels partagent la même machine physique.

Chaque hôte virtuel possède un nom logique et une liste d'un ou plusieurs alias DNS sous lequel ou lesquels il est connu. Un alias DNS est le nom d'hôte TCP/IP et le numéro de port qui sont utilisés pour envoyer des requêtes au servlet, par exemple nomdevotrehôte:80. Lorsqu'aucun numéro de port n'est spécifié, 80 est pris par défaut.

La configuration des hôtes virtuels utilise des entrées à caractères génériques pour les ports correspondant aux entrées d'hôtes virtuels.
  • L'alias par défaut est *:80 avec un port externe qui n'est pas sécurisé.
  • Les alias au format *:9080 utilisent le port interne qui n'est pas sécurisé.
  • Les alias au format *:9443 utilisent le port interne sécurisé.
  • Les alias au format *:443 utilisent le port externe sécurisé.

Une demande client pour un servlet, un fichier JavaServer Pages ou une ressource liée contient un alias DNS et un URI (Uniform Resource Indicator) qui lui est unique. A la réception d'une demande client pour servlet, d'un fichier JavaServer Pages ou d'une ressource liée, l'alias DNS est comparé à la liste de tous les groupes d'hôtes virtuels connus afin de trouver celui qui est adapté. Pour sa part, l'URI est comparé à la liste de tous les groupes d'URI connus pour trouver le groupe correct. Si le groupe d'hôtes virtuels et l'URI sont trouvés, la requête est envoyée au groupe de serveurs correspondant pour traitement et une réponse est envoyée au navigateur. Si aucun groupe d'hôtes virtuels ou d'URI correspondant n'est trouvé en revanche, une erreur est renvoyée au navigateur.

Un hôte virtuel n'est pas associé à un noeud ou une machine particuliers. Il s'agit d'une configuration, plutôt que d'un objet actif ; pour cette raison, vous pouvez le créer mais vous ne pouvez pas le démarrer ou l'arrêter. Un hôte virtuel par défaut, nommé default_host, est configuré automatiquement lorsque vous démarrez un serveur d'applications la première fois. A moins que vous souhaitiez isoler des ressources les unes des autres sur le même noeud, ou sur la même machine physique, vous n'avez probablement pas besoin d'hôtes virtuels en plus de l'hôte par défaut.

Les alias DNS pour cet hôte sont alors configurés comme *:80 et *:9080, où le port 80 est le port du serveur HTTP et le port 9080 celui de transport HTTP du serveur par défaut. L'hôte virtuel par défaut inclut des alias courants, comme l'adresse IP de la machine, le nom d'hôte abrégé et le nom d'hôte qualifié complet. L'un de ces alias comprend la première partie du chemin d'accès d'une ressource, comme un servlet. Par exemple, l'alias localhost:80 est employé dans la demande http://localhost:80/monServlet.

Lorsque vous demandez une ressource, le produit essaie de mapper la demande à un alias d'un hôte virtuel défini. La partie http://host:port/ de l'hôte virtuel ne fait pas de distinction entre les majuscules et les minuscules, à la différence de l'URL qui suit. Ce sont les caractères alphanumériques de l'URL qui sont pris en compte. Des numéros de port différents sont traités comme des alias différents.

Par exemple, la demande http://www.myhost.com/myservlet se mappe à http://WWW.MYHOST.COM/myservlet mais pas à http://WWW.MYHOST.COM/MYSERVLET ou Www.Myhost.Com/Myservlet. Dans les deux derniers cas, ces mappages ont échoué suite à la distinction entre les majuscules et les minuscules. La demande http://www.myhost.com/myservlet ne peut pas se mapper à http://myhost/myservlet ou à http://myhost:9876/myservlet. Ces mappages échouent car les caractères alphanumériques ne sont pas corrects.

Vous pouvez utiliser des entrées génériques pour les alias par port et indiquer que toutes les combinaisons de nom d'hôte et d'adresse valides sur un port particulier mappent un hôte virtuel particulier.

Si vous demandez une ressource en utilisant un alias qui ne peut pas être mappé à un alias d'un hôte virtuel défini, vous recevez une erreur 404 dans le navigateur que vous avez utilisé pour émettre la demande. Un message indique que l'hôte virtuel n'a pas été trouvé.

Il existe deux ensembles d'associations pour les hôtes virtuels. Le déploiement d'application associe une application à un hôte virtuel. Les définitions d'hôte virtuel associent l'adresse réseau de la machine et le transport HTTP ou l'affectation de port du serveur Web du serveur d'applications à l'hôte virtuel. Lorsque l'on observe par exemple le flux des demandes du client Web pour le servlet snoop, les actions suivantes ont lieu :
  1. Le client Web réclame le servlet snoop : à l'adresse Web http://www.some_host.some_company.com:9080/snoop
  2. Le port 9080 de la machine some_host est affecté au serveur d'applications autonome, server1.
  3. Server1 examine les affectations d'hôte virtuel afin de déterminer l'hôte virtuel qui est affecté à l'alias some_host.some_company.com:9080.
  4. Le serveur d'applications constate qu'il n'existe aucun alias explicite pour cette chaîne DNS. Toutefois, comme il existe une affectation générique pour le nom d'hôte * sur le port 9080, il y a correspondance. L'hôte virtuel qui définit l'occurrence est default_host.
  5. Le serveur d'application examine les applications qui sont déployées sur default_host et trouve le servlet de surveillance.
  6. Le serveur d'applications sert ensuite l'application au client Web et le demandeur peut utiliser le servlet snoop.
Tableau 1. Alias d'un hôte virtuel
Hôte virtuel Alias Numéro du port
default_host * 9080
default_host localhost 9080
default_host my_machine 9080
default_host my_machine.my_company.com 9080
default_host localhost 80

Un hôte virtuel peut posséder de nombreux alias. Ces alias peuvent même se chevaucher. Par exemple :

Le serveur d'application recherche une correspondance à l'aide de l'adresse explicite qui est spécifiée sur l'adresse du client Web. Il peut toutefois résoudre la correspondance avec un autre alias qui correspond au masque avant de correspondre à l'adresse explicite. La définition préalable d'un alias dans la liste d'alias ne garantit pas l'ordre de recherche chaque fois que le produit recherche un alias correspondant.

Hôtes virtuels avec alias se chevauchant. Supposons que vous définissiez des alias se chevauchant pour les deux hôtes virtuels car vous avez défini par erreur le port 9080 au lieu du port 9060 pour l'hôte admin_host :

Un incident peut survenir si vous utilisez le même alias pour deux hôtes virtuels différents. Supposons par exemple que vous ayez installé l'application par défaut et le servlet snoop sur l'hôte default_host. Vous disposez également d'un autre hôte virtuel qui est appelé admin_host. Toutefois, vous n'avez pas installé l'application par défaut ou le servlet snoop sur l'hôte admin_host.

Tableau 2. Hôtes virtuels avec alias se chevauchant.
Hôte virtuel Alias Numéro du port
default_host * 9080
default_host localhost 9080
admin_host * 9060
admin_host my_machine.com 9080

Supposons que vous receviez une demande d'un client Web pour http://my_machine.com:9080/snoop.

Si le serveur d'applications compare la requête à *:9080, l'application est servie depuis default_host. Si le serveur d'applications compare la demande à my.machine.com:9080, l'application est introuvable. Une erreur 404 se produit dans le navigateur qui génère la demande. Un message indique que l'hôte virtuel n'a pas été trouvé.

En effet, l'application demandée n'a pas été trouvée sur le premier hôte virtuel dont l'alias correspond. Pour coder correctement les alias, il est donc nécessaire que le nom d'alias d'une demande entrante ne corresponde qu'à un hôte virtuel parmi toutes vos définitions d'hôte virtuel. Si l'URL correspond à plusieurs hôtes virtuels, vous voyez le problème qui est décrit.


Icône indiquant le type de rubrique Rubrique de concept

Nom du fichier : cwlp_virtual_hosts_ovr.html