Unidad 9.3: VirtualHosts y sitios

Multiples sitios en un solo servidor

Author

Diego Saavedra

Published

Feb 2, 2026

Unidad 9.3: VirtualHosts y sitios

Introduccion

Un VirtualHost permite servir multiples sitios (dominios) desde el mismo Apache. La base operacional es: document root -> vhost -> enable -> configtest -> reload.

Objetivos de aprendizaje

  • Crear un sitio simple con DocumentRoot propio
  • Habilitar el sitio y deshabilitar el default
  • Validar con curl usando Host header

Crear un DocumentRoot de ejemplo

BASH
1$ sudo mkdir -p /var/www/site1/public


2$ echo '<h1>Site1 OK</h1>' | sudo tee /var/www/site1/public/index.html >/dev/null
1
mkdir -p crea el directorio del sitio.
2
tee escribe un index.html con permisos root.

Crear VirtualHost

BASH
1$ sudo tee /etc/apache2/sites-available/site1.conf >/dev/null <<'EOF'
<VirtualHost *:80>
  ServerName site1.local
  DocumentRoot /var/www/site1/public

  ErrorLog ${APACHE_LOG_DIR}/site1-error.log
  CustomLog ${APACHE_LOG_DIR}/site1-access.log combined

  <Directory /var/www/site1/public>
    Require all granted
  </Directory>
</VirtualHost>
EOF
1
tee + heredoc crea el archivo del VirtualHost.

Habilitar sitio y validar

BASH
1$ sudo a2ensite site1.conf
Enabling site site1.


2$ sudo a2dissite 000-default.conf
Site 000-default disabled.


3$ sudo apachectl configtest
Syntax OK


4$ sudo systemctl reload apache2
1
a2ensite habilita el vhost.
2
a2dissite deshabilita el sitio por defecto.
3
apachectl configtest valida sintaxis.
4
systemctl reload aplica cambios.

Probar con Host header

BASH
1$ curl -H 'Host: site1.local' http://127.0.0.1
<h1>Site1 OK</h1>
1
curl -H ‘Host: …’ simula un request con nombre de host para seleccionar el VirtualHost.

Code Appendix