Apache2 admite servir diferentes contenidos según los nombres de dominio, incluso si todos esos dominios se resuelven en la misma dirección IP. Cada uno de los nombres de dominio es manejado por un host virtual , por lo tanto, el host virtual basado en el nombre del nombre .
Aquí hay una configuración de muestra para dos dominios:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.yourfirstdomain.tld
DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>
<VirtualHost *:80>
ServerName www.yourseconddomain.tld
DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>
Encontrará la documentación oficial sobre soporte de host virtual basado en nombre aquí .
Sin embargo, tenga en cuenta que esto solo funcionará con conexiones HTTP simples, no con HTTPS (HTTP sobre SSL): los hosts virtuales basados en nombres dependen de saber qué nombre se solicita, pero Apache no puede conocer esta información hasta que el SSL encriptado Se establece la conexión.
Si necesita que su configuración funcione también con HTTPS, debe confiar en una extensión del protocolo SSL llamada Indicación de nombre del servidor (SNI) ( RFC4366 ). Básicamente, los clientes habilitados para SNI (por ejemplo: navegadores web) agregan información de texto sin formato adicional al establecer la conexión SSL cifrada, lo que permite al servidor saber el nombre que se solicita antes de que la conexión SSL esté lista.
Todos los navegadores aún no son compatibles con SNI. Al momento de escribir y de acuerdo con Wikipedia, estos hacen:
- Internet Explorer 7 o posterior, en Windows Vista o superior (no funciona en XP, incluso IE 8)
- Mozilla Firefox 2.0 o posterior
- Opera 8.0 o posterior (el protocolo TLS 1.1 debe estar habilitado)
- Opera Mobile al menos versión 10.1 beta en Android
- Google Chrome (Vista o superior, XP en Chrome 6 o posterior, OS X 10.5.7 o posterior en Chrome 5.0.342.1 o posterior)
- Safari 2.1 o posterior (Mac OS X 10.5.6 o superior y Windows Vista o superior)
- Konqueror / KDE 4.7 o posterior
- MobileSafari en Apple iOS 4.0 o posterior
- Navegador predeterminado de Android en Honeycomb (v3.x) o posterior
- Windows Phone 7
- MicroB en Maemo
Hospedar varios hosts virtuales basados en nombres accesibles a través de HTTPS requiere que habilite mod_ssl y agregue una configuración similar a la del ejemplo anterior:
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>
Recuerde que usar SSL requiere que compre certificados SSL para sus dominios, o que genere algunos autofirmados, y que configure Apache para usarlos para conexiones SSL.