Dominios virtuales en apache2

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

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License