Cómo configurar un virtual host en Apache (Windows)

¿Quieres aprender a configurar un virtual host en Apache desde Windows 10?

En este artículo te lo explico paso a paso, pero antes te recomiendo que le eches un vistazo a estos dos artículos si no sabes qué es un virtual host o no tienes Apache instalado en Windows 10:

Cómo instalar Apache en Windows 10
¿Qué es un virtual host?

Si ya tienes claro cómo instalar Apache y qué es un virtual host, entonces sigue leyendo para aprender paso a paso cómo configurar un virtual host en Apache desde Windows 10.

Esto es todo lo que vas a encontrar en este artículo:

Escenario
Cómo definir un host en Windows 10
Cómo configurar un virtual host en Apache
Vídeo con la explicación paso a paso

Escenario

Antes de comenzar deja que te cuente qué vamos a configurar exactamente.

Con la configuración por defecto de Apache y el servicio arrancado puedes acceder a la siguiente web escribiendo en el navegador localhost:

it works apache localhost

Lo que queremos conseguir es que esté disponible una segunda web que será accesible a través de otro dominio. Para el ejemplo utilizaré miweb.local:

virtual host en apache

De esta forma tendremos dos webs: una que estará disponible a través de un virtual host asociado a localhost y otra en un segundo virtual host asociado a miweb.local.

Si necesitas configurar más dominios y más webs puedes seguir los mismos pasos que te voy a contar a continuación y configurar todos los virtual host necesarios.

Cómo definir un host en Windows 10

El primer paso es definir los host necesarios. Para el ejemplo serían localhost y miweb.local.

Por defecto localhost ya está definido, apunta a la IP local 127.0.0.1. Tendremos que definir miweb.local y hacer que también apunte a la IP local, puesto que Apache está en la misma máquina en la que vamos a realizar esta configuración.

La configuración de los host se encuentra en un fichero que está en C:\Windows\System32\drivers\etc\hosts:

fichero hosts windows 10

La configuración es muy sencilla. Simplemente hay que indicar el nombre del host y asociarle la dirección IP a la que queremos traducirlo utilizando el siguiente formato:

<dirección IP> <host>

Para definir miweb.local tenemos que añadir la siguiente línea al final del fichero:

127.0.0.1 miweb.local

Fíjate en la siguiente captura. Puede que tu fichero de hosts varíe un poco, pero lo importante es la última línea:

configuración de hosts windows 10

Una vez añadido el host guardamos el fichero y vamos a comprobar que miweb.local apunta a 127.0.0.1.

Para ello abrimos el navegador y accedemos a http://miweb.local. Si es correcto tendrá que mostrarse la misma página que vimos al escribir localhost, puesto que ahora ambos hosts apuntan a la misma IP:

virtual host apache2

Perfecto, ahora ya podemos configurar un virtual host asociado a miweb.local para que se sirva la web que nos interesa y no la web por defecto de Apache.

Cómo configurar un virtual host en Apache

Vamos a configurar un virtual host dentro de Apache.

Crear el directorio que contendrá la web

Primero hay que crear el directorio que contendrá la web dentro del directorio htdocs de Apache, es decir, en C:\Apache24\htdocs. El directorio se llamará miweb (o como tu quieras):

Y dentro del directorio que acabamos de crear almacenaremos todos los ficheros necesarios para la web.

Yo voy a guardar un documento html. Lo voy a llamar index.html y tendrá el siguiente contenido:

<html>
  <head>
    <title>Mi Web</title>
  </head>
  <body>
    <h1>Mi Web</h1>
  </body>
</html>

Configurar el virtual host

Ahora que ya tenemos el contenido de la web en el directorio vamos a configurar un virtual host para que se muestre esta web cuando escribamos miweb.local en el navegador.

Dentro del directorio C:\Apache24\conf se encuentran los ficheros de configuración:

ficheros de configuración apache 2

El fichero httpd.conf contiene la configuración principal de Apache. Esta configuración es la que carga Apache cuando arranca.

Tenemos que localizar dentro de este fichero la configuración asociada a los virtual host. Busca las siguientes líneas dentro de httpd.conf:

httpd.conf

Como podrás comprobar la línea Include conf/extra/httpd-vhosts.conf tiene un carácter # delante. Eso significa que está comentada y, por tanto, no está cargando la configuración de los virtual host. Quita el carácter # para descomentarla y que cargue la configuración.

IMPORTANTE: Para poder editar los ficheros de configuración de Apache debes tener permisos de administrador, por tanto, abre un editor de texto (el bloc de notas por ejemplo) con permisos de administrador y abre los ficheros desde ahí. Si no sabes cómo hacerlo mira el vídeo que te dejo al final del artículo.

Lo siguiente es localizar el fichero indicado en esa línea (httpd-vhosts.conf), porque ahí es dónde tenemos que definir los hosts virtuales. Está en C:\Apache24\conf\extra:

httpd-vhosts.conf

Ahora añadimos en el fichero httpd-vhosts la configuración del nuevo host virtual que será la siguiente:

<VirtualHost *:80>
    ServerName miweb.local
    DocumentRoot C:\Apache24\htdocs\miweb
</VirtualHost>

Utilizaremos el puerto 80 (puerto por defecto de http) para atender las solicitudes.

Con ServerName indicamos el nombre del host (recuerda que lo definimos anteriormente en el fichero de hosts de Windows).

Usando DocumentRoot indicamos el directorio que contiene el recurso que queremos servir a través del ServerName. En el ejemplo es C:\Apache24\htdocs\miweb. Es el directorio que creamos anteriormente y en el que almacenamos el fichero index.html.

He utilizado una configuración muy básica para este ejemplo, pero se pueden definir muchos más parámetros dependiendo de las necesidades. Puedes consultar otras directivas de configuración en la documentación oficial de Apache.

Aplicar los cambios y probar

Ahora solo falta reiniciar Apache para que se apliquen los cambios. Desde la consola de Windows (cmd) ejecutaremos los siguientes comandos:

cd C:\Apache24\bin
httpd -k restart

Una vez reiniciado Apache ya solo nos queda probar desde el navegador que se abre el recurso correcto al acceder a http://miweb.local:

virtual host apache2

Si todo es correcto ya estaría el virtual host listo.

Vídeo con la explicación paso a paso

¿Te quedan dudas? Mira este vídeo que he grabado con todo el proceso explicado paso a paso:

Sígueme:

Comments are closed.

Up ↑