Descripción general
Los dominios virtuales consisten en utilizar un mismo servidor web para atender varios dominios. Se utiliza en el caso en que de dispone de una única dirección IP pública y la misma esta asociada a varios nombres de dominio. Por ejemplo, la IP X.Y.Z.W esta asociada a este_dominio.com.ar y a este_otro_dominio.com.ar y los sitios están alojados en un mismo servidor web apache.
Configuración
Para que funcionen varios dominios virtuales en un host que tiene asociado los dominios a una única IP se debe utilizar la cláusula NameVirtualHost y VirtualHost.
En /etc/apache2/sites-available vamos a tener un archivo por cada uno de nuestros sitios, que luego serán enlazados dinámicamente desde /etc/apache2/sites-enabled
Cada uno de estos archivos (relacionados con cada sitio) van a vincular el contenido real del sitio web.
Vamos a los bifes, tengo dos dominios:
- www.uno.com
- www.dos.com
El dominio uno.com debe aceptar las consultas al puerto 80 pero redirigirlas al puerto 443 porque queremos que funcione bajo SSL. El segundo, funciona solo en el puerto 80.
Creamos estos dos archivos y los enlazamos como dijimos:
/etc/apache2/sites-available# touch www.uno.com
/etc/apache2/sites-available# touch www.dos.com
/etc/apache2/sites-available#cd ../sites-enabled
/etc/apache2/sites-enabled#ln -s ../sites-available/www.uno.com uno
/etc/apache2/sites-enabled#ln -s ../sites-available/www.dos.com dos
Vamos a encontrar bajo este directorio también un archivo que es el que trae apache por defecto, este es el famoso It works!.
Antes de ver cómo configurar cada uno de estos dominios vale la pena aclarar que la cláusula NameVirtualHost debe ir en uno solo de los archivos que se encuentren en /sites-available/ , esto le indica a apache que se están utilizando varios hostvirtuales. En nuestro caso lo vamos a incluir en www.uno.com pero podría ir en cualquiera.
Ahora sí, veamos lo que ponemos en www.uno.com:
NameVirtualHost *:443
NameVirtualHost *:80
<VirtualHost *:443>
ServerName www.uno.com
ServerAlias uno.com
DocumentRoot /var/www/sitiouno
<Directory /var/www/sitiouno>
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch
Allow from All
</Directory>
#Certificados
SSLEngine on
SSLCertificateFile /etc/apache2/sites-available/uno-ssl.crt
SSLCertificateKeyFile /etc/apache2/sites-available/uno-ssl.key
</VirtualHost>
<VirtualHost *:80>
ServerName www.uno.com
ServerAlias uno.com
DocumentRoot /var/www/sitiouno
<Directory /var/www/sitiouno>
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch
Allow from All
</Directory>
# Redirigir a https
RewriteEngine On
RewriteRule ^(.*)$ https://www.dos.com$1 [R,L]
</VirtualHost>
Ahora veamos el contenido del sitio www.dos.com
<VirtualHost *:80>
ServerName www.dos.com
ServerAlias dos.com
DocumentRoot /var/www/sitiodos
<Directory /var/www/sitiodos>
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch
Allow from All
</Directory>
</VirtualHost>
Solo queda reiniciar el apache2 y listo:
/etc/init.d/apache2 restart






