O Apache2 suporta a veiculação de conteúdos diferentes, dependendo dos nomes de domínio, mesmo que todos esses domínios resolvam para o mesmo endereço IP. Cada um dos nomes de domínio é tratado por um host virtual , portanto, o host virtual baseado em nome do nome .
Aqui está uma configuração de amostra para dois domínios:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.yourfirstdomain.tld
DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>
<VirtualHost *:80>
ServerName www.yourseconddomain.tld
DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>
Você encontrará a documentação oficial sobre suporte a host virtual baseado em nome aqui .
No entanto, observe que isso funcionará apenas com conexões HTTP simples, e não com HTTPS (HTTP sobre SSL): os hosts virtuais baseados em nomes dependem de saber qual nome está sendo solicitado, mas essas informações não podem ser conhecidas pelo Apache até que o SSL criptografado conexão estabelecida.
Se você precisar que sua instalação funcione com HTTPS também, você precisará contar com uma extensão do protocolo SSL chamada SNI ( Server Name Indication ) ( RFC4366 ). Basicamente, os clientes habilitados para SNI (por exemplo, navegadores da web) adicionam informações adicionais em texto sem formatação ao estabelecer a conexão SSL criptografada, permitindo que o servidor saiba o nome que está sendo solicitado antes que a conexão SSL esteja pronta.
Todos os navegadores ainda não suportam SNI. No momento da redação deste artigo e de acordo com a Wikipedia, estes fazem:
- Internet Explorer 7 ou posterior, no Windows Vista ou superior (não funciona no XP, nem no IE 8)
- Mozilla Firefox 2.0 ou posterior
- Opera 8.0 ou posterior (o protocolo TLS 1.1 deve estar ativado)
- Opera Mobile pelo menos versão 10.1 beta no Android
- Google Chrome (Vista ou superior, XP no Chrome 6 ou mais recente, OS X 10.5.7 ou superior no Chrome 5.0.342.1 ou mais recente)
- Safari 2.1 ou posterior (Mac OS X 10.5.6 ou superior e Windows Vista ou superior)
- Konqueror / KDE 4.7 ou posterior
- MobileSafari no Apple iOS 4.0 ou posterior
- Navegador padrão do Android no Honeycomb (v3.x) ou mais recente
- Windows Phone 7
- MicroB no Maemo
Hospedar vários hosts virtuais baseados em nome acessíveis através do HTTPS exige que você ative o mod_ssl e adicione uma configuração semelhante à do exemplo acima:
Listen 443
NameVirtualHost *:443
# Accept connections for these vhosts from non-SNI clients
# Clients without SNI will be handled by the first defined vhost.
# If you only want SNI-enabled client, put on instead
SSLStrictSNIVHostCheck off
<VirtualHost *:443>
ServerName www.yourfirstdomain.tld
DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>
<VirtualHost *:443>
ServerName www.yourseconddomain.tld
DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>
Lembre-se de que o uso do SSL exige que você compre certificados SSL para seus domínios - ou gere alguns certificados autoassinados e configure o Apache para usá-los para conexões SSL.