Hôtes virtuels

Un hôte virtuel est une configuration permettant à une seule machine hôte de se comporter comme plusieurs. Il conserve une liste de types MIME (Multipurpose Internet Mail Extensions) qu'il traite. Vous pouvez associer un hôte virtuel à un ou plusieurs modules Web, mais ne pouvez associer chaque module Web 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 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 indiqué, la valeur 80 est utilisée 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.

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 particulier (machine). Il s'agit d'une configuration plutôt que d'un objet actif, ce qui explique pourquoi il peut être créé, mais pas démarré ni arrêté. Un hôte virtuel par défaut, appelé hôte_pardéfaut, est configuré automatiquement la première fois que vous démarrez un serveur d'application. Sauf si vous souhaitez isoler des ressources les unes des autres sur le même noeud (machine physique), vous n'avez certainement pas besoin d'hôtes virtuels en plus de celui 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 à une ressource, telle qu'un servlet. Par exemple, l'alias localhost:80 est employé dans la demande http://localhost:80/monServlet.

Lorsque vous ajoutez un localhost aux hôtes virtuels, le nom d'hôte et l'adresse IP de la machine localhost sont ajoutés à la table d'alias. Cela permet à un utilisateur distant d'accéder à la console d'administration.

Vous pouvez utiliser la console d'administration pour ajouter ou modifier des alias DNS si vous souhaitez utiliser des ports autres que ceux par défaut. Si vous changez un alias DNS, vous devez régénérer la configuration du module d'extension du serveur Web. Vous pouvez utiliser la console d'administration pour lancer la régénération du module d'extension.

Pratiques recommandées Pratiques recommandées: Vous pouvez ajouter d'autres alias ou changer ceux par défaut si :
  • L'instance du serveur HTTP s'exécute sur un port autre que 80. Ajoutez le numéro de port correct à chaque alias. Par exemple, remplacez votrehôte par votrehôte:8000.
  • Vous voulez faire des demandes HTTPS utilisant la couche SSL (Secure Sockets Layer). Pour faire des demandes HTTPS, vous devez ajouter le port 443 à chaque alias. Le port 443 est celui par défaut pour les demandes SSL.
  • Votre instance de serveur Web écoute des demandes SSL sur un port autre que 443. Dans ce cas, vous devez ajouter ce numéro de port à chaque alias.
  • Vous voulez utiliser un port autre que celui par défaut (9080) pour le serveur d'applications.
  • Vous voulez utiliser d'autres alias non répertoriés.
bprac

Lorsque vous demandez une ressource, le produit tente de mapper la demande vers l'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 correspond à http://WWW.MYHOST.COM/myservlet mais non à 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 correspond pas à 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 caractères génériques pour les alias par port et spécifier que toutes les combinaisons valides nom d'hôte/adresse d'un port sont mappées en un hôte virtuel donné.

Si vous demandez une ressource en utilisant un alias ne pouvant être mappé vers l'alias d'un hôte virtuel défini, vous recevez une erreur 404 dans le navigateur utilisé pour 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 de la demande par le client Web du servlet snoop, les actions suivantes sont effectuées :
  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 serveur1.
  3. serveur1 recherche dans les affectations d'hôte virtuel l'hôte virtuel 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. Il existe toutefois une affectation de caractère générique pour le nom d'hôte * sur le port 9080. Il s'agit donc d'une occurrence. L'hôte virtuel qui définit l'occurrence est default_host.
  5. Le serveur d'applications recherche le servlet snoop parmi les applications déployées sur l'hôte default_host.
  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. Un hôte virtuel peut posséder de nombreux alias. Ces alias peuvent même se chevaucher. Par exemple :
Hôte virtuel Alias port
default_host * 9080
localhost 9080
my_machine 9080
my_machine.my_company.com 9080
localhost 80

Le serveur d'applications recherche une correspondance à partir de l'adresse explicite spécifiée dans l'adresse du client Web. Toutefois, il peut accepter tout alias dont le format correspond à celui spécifié avant de rechercher l'adresse explicite. Le seul fait de définir un alias en premier dans la liste des alias ne garantit pas que la recherche s'effectuera dans cet ordre lorsque le produit recherchera un alias donné.

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 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 des 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 :
Hôte virtuel Alias port
default_host * 9080
localhost 9080
admin_host * 9060
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 plusieurs hôtes virtuels correspondent à l'URL spécifiée, l'incident décrit ci-avant se produit.


Icône indiquant le type de rubrique Rubrique de concept



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=ccws_vhost
Nom du fichier : ccws_vhost.html