Virtual Hosts (Apache)

TEORÍA

Un Virtual Host es un alias (ej: foo.com.local) que se le da a una carpeta de nuestro disco duro donde almacenaremos nuestro sitio web (ej: «C:/www/web_foo»).

En Windows + Apache, las «capas» de configuración serían las siguientes:

1.- Primero asociar el alias con una dirección IP o dominio para que el SO entienda qué le estamos pidiendo.

2.- Decirle a Apache a qué carpeta del disco duro tienen que apuntar las peticiones que tengan la IP/dominio + alias recibidos.

PRÁCTICA

Para conseguir esto tenemos que:

Asociar el alias a una IP/Dominio

Tenemos que abrir el archivo «hosts» del sistema operativo (que es el que asocia los alias a IP’s y dominios).

El archivo se encuentra en: C:\Windows\System32\drivers\etc\hosts

Editar el archivo incluyendo una línea donde ponga IP & Alias (cada línea identifica a una entrada de configuración diferente, el manual de Windows indica que el formato concreto es <tab>IP<tab>Alias).

Si vamos a realizar la prueba en local añadiríamos la siguiente línea:

#Formato:
#<tab>IP<tab>Alias
127.0.0.1 foo.com.local

Encontrar la sección de configuración de Virtual Hosts

En el Apache del XAMPP, tenemos el archivo de configuración global «httpd.conf«, y ahí, existe una sección titulada como «# Virtual Hosts» que tiene la siguiente sentencia

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Indicándonos que la configuración de los Virtual Hosts se encuentra en el fichero «httpd-vhosts.conf» (Si se comentase esa línea podríamos poner aquí dentro la configuración).

Establecer la carpeta a la que debe apuntar ese alias + IP

Finalmente, dentro del archivo o sección de configuración de los Virtual Hosts, incluimos el siguiente código XML básico:

<VirtualHost 127.0.0.1:80>
  ServerName foo.com.local
  DocumentRoot "C:/www/web_foo"
</VirtualHost>

Nótese, que si queremos tener otro alias en la misma IP no hay problema, solo hay que añadir otro nodo «VirtualHost» al archivo de configuración indicando el alias y la carpeta a la que debe apuntar.

Finalmente

Tenemos que reiniciar el servidor Apache y en la URL de un navegador de nuestra máquina poner «foo.com.local» y nos mandará al archivo «index.html» que tengamos en «C:/www/web_foo».

CONEXIÓN HTTPS

Cuando se usa SSL, la IP de VirtualHost no tiene el puerto 80 sino el 443

<VirtualHost 127.0.0.1:443>
  ...
</VirtualHost>

En ese caso no valdría con poner «foo.com.local» en la URL, ni tampoco funcionaría si ponemos «foo.com.local:443», hay que indicar en la URL que la conexión es segura para que nos derive adecuadamente escribiendo:

https://foo.com.local

Redirigir a HTTPS

Puedes ver cómo configurar una redirección de HTTP a HTTPS aquí.

Deja un comentario