Como utilizar Virtual Host e Mod Proxy juntos
O exemplo a seguir demonstra uma máquina front-end fazendo proxy de um host virtual por meio de um servidor em execução em outra máquina. No exemplo, um host virtual com o mesmo nome é configurado em uma máquina no IP 192.168.111.2
. A ProxyPreserveHost On
é usada para o nome do host desejado, no caso de você estar fazer uso de diferentes hostnames em uma mesma máquina.
<VirtualHost*:*>ProxyPreserveHostOnProxyPass/ http://192.168.111.2/ProxyPassReverse/ http://192.168.111.2/ServerName hostname.example.com </VirtualHost>
Usando _default_
vhosts:
_default_
vhosts para todas as portas
Como solicitar que quaisquer endereços IP não especificados, não sejam utilizados por nenhum outro hostvirtual.
<VirtualHost _default_:*>DocumentRoot/www/default </VirtualHost>
Usar esse vhost padrão com uma porta impede efetivamente que qualquer solicitação vá para o servidor principal.
Um vhost padrão nunca atende a um pedido que foi enviado para um endereço/porta que é usado para vhosts name-based. Você pode usar AliasMatch
ou RewriteRule
para reescrever qualquer solicitação para uma única página de informações (ou script).
_default_
vhosts para diferentes portas
O mesmo que na primeira configuração, mas no caso o servidor atende em várias portas e queremos usar um segundo _default_
vhost para a porta 80.
<VirtualHost _default_:80>DocumentRoot/www/default80 # ...</VirtualHost><VirtualHost _default_:*>DocumentRoot/www/default # ...</VirtualHost>
O vhost padrão para a porta 80 captura todas as solicitações que foram enviadas para um endereço IP não especificado. O servidor principal nunca é usado para atender a uma solicitação.
_default_
vhosts para um porta
Queremos ter um vhost padrão para a porta 80, mas nenhum outro vhost padrão. Para isso:
<VirtualHost _default_:80>DocumentRoot/www/default ...</VirtualHost>
Uma solicitação para um endereço não especificado na porta 80 é fornecida a partir do vhost padrão. Qualquer outra solicitação para um endereço e porta não especificados é atendida a partir do servidor principal. Qualquer uso de *
em uma declaração de host virtual, terá uma precedência maior que _default_
.
Migrando um vhost name-based para um vhost baseado em IP
O vhost name-based com o nome do host www.example.org
deve ter seu próprio endereço IP. Para evitar problemas com servidores de nomes ou proxies que armazenaram em cache o endereço IP antigo para o vhost baseado em nome. Então, queremos fornecer as duas variantes durante uma fase de migração.
A solução é fácil, porque podemos simplesmente adicionar um novo endereço IP ( 172.20.30.50
) à diretiva VirtualHost
Listen80ServerName www.example.com DocumentRoot/www/example1 <VirtualHost172.20.30.40172.20.30.50>DocumentRoot/www/example2 ServerName www.example.org # ...</VirtualHost><VirtualHost172.20.30.40>DocumentRoot/www/example3 ServerName www.example.net ServerAlias*.example.net # ...</VirtualHost>
Com isso, o vhost pode ser acessado através do novo endereço (como um vhost baseado em IP) e através do endereço antigo (como um vhost com nome).