Hosts Virtuais

Um host virtual é uma entidade de configuração que permite que uma única máquina host se pareça com várias máquinas. Mantém uma lista de tipos MIME (Multipurpose Internet Mail Extensions) que ele processa. É possível associar um host virtual a um ou mais módulos da Web, mas cada módulo da web pode ser associado a um, e somente um, host virtual. Os recursos associados a um host virtual não podem compartilhar dados com os recursos associados a um outro host virtual, mesmo que os hosts virtuais compartilhem da mesma máquina física.

Cada host virtual tem um nome lógico e uma lista de um ou mais aliases DNS pelos quais ele é conhecido. Um alias DNS é o nome do host e o número da porta TCP/IP utilizados para solicitar o servlet, por exemplo, yourHostName:80. Quando não for especificado nenhum número de porta, adota-se o 80.

A configuração do host virtual utiliza entradas de caracteres curinga com as portas para suas entradas de host virtual.

Um pedido de cliente para um servlet, arquivo JavaServer Pages ou recurso relacionado contém um alias DNS e um URI (Uniform Resource Indicator) que é exclusivo para esse recurso. Quando o pedido de um cliente por um servlet, um arquivo JavaServer Pages ou um recurso relacionado é recebido, o alias DNS é comparado à lista de todos os grupos de hosts virtuais conhecidos para localizar o host virtual correto e o URI é comparado à lista de todos os grupos de URI conhecidos para localizar o grupo de URIs correto. Se o grupo de host virtual e grupo URI forem encontrados, o pedido será enviado ao grupo de servidores correspondente para processamento e uma resposta será retornada ao navegador. Se um grupo de host virtual correspondente ou grupo URI não for localizado, um erro será retornado ao navegador.

Um host virtual não está associado a um nó (máquina) específico. É uma configuração e não um objeto ativo que explica a razão para criá-lo, mas não iniciá-lo ou pará-lo. Um host virtual padrão, denominado default_host, é configurado automaticamente na primeira vez que você inicia um servidor de aplicativos. A menos que você queira especificamente isolar recursos uns dos outros no mesmo nó (máquina física), provavelmente não será necessário nenhum host virtual além do host padrão.

Os aliases DNS para o host virtual padrão são configurados como *:80 e *:9080, em que a porta 80 é a porta do servidor HTTP e a porta 9080 é a porta do transporte HTTP do servidor padrão. O host virtual padrão inclui aliases comuns, como o endereço IP da máquina, o nome abreviado do host e o nome completo do host. Um desses aliases contém a primeira parte do caminho para acessar um recurso, como um servlet. Por exemplo, o alias localhost:80 é utilizado no pedido http://localhost:80/myServlet.

A adição de um host local aos hosts virtuais adiciona o nome do host e o endereço IP da máquina do host local à tabela de aliases. Isso permite que um usuário remoto acesse o console administrativo.

É possível utilizar o console administrativo para incluir ou alterar aliases DNS se quiser utilizar portas diferentes das portas padrão. Se fizer alterações em um alias DNS, será necessário gerar novamente a configuração do plug-in de servidor da Web. É possível utilizar o console administrativo para iniciar a regeneração do plug-in.

Boas Práticas Boas Práticas: É possível querer incluir aliases adicionais ou alterar os aliases padrão se:
  • A instância do Servidor HTTP está sendo executada em uma porta que não é a 80. Inclua o número de porta correto a cada um destes aliases. Por exemplo, altere yourhost para yourhost:8000.
  • Você deseja fazer pedidos de HTTPS, que utilizam SSL (Secure Sockets Layer). Para fazer pedidos de HTTPS, você deve incluir a porta 443 em cada um dos aliases. A porta 443 é a padrão para pedidos SSL.
  • Sua instância de servidor da Web está atendendo pedidos SSL em uma porta diferente da 443. Nessa situação, você deve incluir o número da porta em cada um dos aliases.
  • Você deseja utilizar uma porta diferente da porta padrão (9080) para o servidor de aplicativos.
  • Você deseja utilizar outros aliases que não estão listados.
bprac

Quando você solicita um recurso, o produto tenta mapear o pedido para um alias de um host virtual definido. A partehttp://host:port/ do host virtual não faz distinção de maiúsculas e minúsculas, mas a URL que segue, sim. A correspondência para a URL deve ser exata de modo alfanumérico. Números de porta diferentes são tratados como aliases diferentes.

Por exemplo, o pedido http://www.myhost.com/myservlet é mapeado com êxito para http://WWW.MYHOST.COM/myservlet, mas não para http://WWW.MYHOST.COM/MYSERVLET ou Www.Myhost.Com/Myservlet. Nos dois últimos casos, esses mapeamentos falham por causa da distinção entre maiúsculas e minúsculas. O pedido http://www.myhost.com/myservlet não é mapeado com êxito para http://myhost/myservlet ou para http://myhost:9876/myservlet. Esses mapeamentos falham porque não estão alfanumericamente corretos.

É possível utilizar entradas de curingas para aliases por porta e especificar que todas as combinações válidas de nome de host e endereço em uma determinada porta sejam mapeadas para um determinado host virtual.

Se solicitar um recurso usando um alias que não possa ser mapeado para um alias de um host virtual definido, você receberá um erro 404 no navegador usado para emitir o pedido. Uma mensagem indicará que não foi possível localizar o host virtual.

Dois conjuntos de associações ocorrem para os hosts virtuais. A implementação do aplicativo associa um aplicativo a um host virtual. Definições de host virtual associam o endereço de rede da máquina e o transporte HTTP ou designação de porta do servidor da Web do servidor de aplicativos ao host virtual. Observando o fluxo de pedido Web client de snoop servlet, por exemplo, ocorrem as seguintes ações:
  1. O web client solicita ao snoop servlet: no endereço da Web http://www.some_host.some_company.com:9080/snoop
  2. A máquina some_host possui a porta 9080 designada ao servidor de aplicativos independente, server1.
  3. O server1 verifica as designações do host virtual para determinar o host virtual designado ao alias some_host.some_company.com:9080.
  4. O servidor de aplicativos descobre que não existe nenhum alias explícito para a cadeia DNS. No entanto, a designação de um caractere curinga para o nome do host * na porta 9080 existe. Isso é uma correspondência. O host virtual que define a correspondência é default_host.
  5. O servidor de aplicativos verifica os aplicativos implementados no default_host e localiza o servlet snoop.
  6. O servidor de aplicativos entrega o aplicativo para o web client e o solicitador pode usar o snoop servlet.
Tabela 1. Aliases para um Host Virtual. É possível ter qualquer número de aliases para um host virtual. É possível ter até aliases sobrepostos, como:
Host Virtual Alias Port
default_host * 9080
localhost 9080
my_machine 9080
my_machine.my_company.com 9080
localhost 80

O servidor de aplicativos procura por uma correspondência utilizando o endereço explícito especificado no endereço do web client. No entanto, ele pode resolver a correspondência com qualquer outro alias que corresponda ao padrão antes de corresponder ao endereço explícito. A simples definição de um alias primeiramente na lista de aliases não garante a ordem de procura quando o produto procurar por um alias correspondente.

Pode ocorrer um problema se você utilizar o mesmo alias para dois hosts virtuais diferentes. Por exemplo, suponhamos que você tenha instalado o aplicativo padrão e o servlet snoop no default_host. Você também tem outro host virtual chamado admin_host. No entanto, você não instalou o aplicativo padrão nem o servlet snoop no admin_host.

Tabela 2. Hosts Virtuais com Aliases de Sobreposição. Suponhamos que você defina os aliases sobrepostos para os hosts virtuais, pois você definiu acidentalmente a porta 9080 para o admin_host em vez da porta 9060:
Host Virtual Alias Port
default_host * 9080
localhost 9080
admin_host * 9060
my_machine.com 9080

Presume que um pedido do Web client entre para http://my_machine.com:9080/snoop.

Se o servidor de aplicativos corresponder ao pedido junto a *:9080, o aplicativo será atendido a partir do default_host. Se o servidor de aplicativos corresponder ao pedido para my.machine.com:9080, o aplicativo não poderá ser localizado. Um erro 404 ocorre no navegador que emite o pedido. Uma mensagem indicará que não foi possível localizar o host virtual.

Esse problema é o resultado de não localizar o aplicativo solicitado no primeiro host virtual que tem um alias correspondente. A maneira correta de codificar aliases é o nome do alias em um pedido que chega corresponder somente a um host virtual entre todas as suas definições de host virtual. Se o URL corresponder a mais de um host virtual, você verá o problema que acaba de ser descrito.


Ícone que indica o tipo de tópico Tópico de Conceito



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=ccws_vhost
Nome do arquivo: ccws_vhost.html