Introducción
Alojar varios sitios web en un solo servidor Ubuntu es una solución rentable para desarrolladores, pequeñas empresas y aficionados. Esta guía te mostrará cómo configurar hosts virtuales en Apache y Nginx para alojar varios sitios web en el mismo servidor. Al final de este tutorial, podrás configurar tu servidor para gestionar varios dominios o subdominios de forma eficiente.
Artículos anteriores:
01. Introducción al servidor Ubuntu – SysOSX: AI & Cloud
02. Cómo configurar tu primer servidor Ubuntu: guía para principiantes – SysOSX: AI & Cloud
03. Dominar la línea de comandos de Linux para el servidor Ubuntu – SysOSX: AI & Cloud
04. Gestionar usuarios y permisos en el servidor Ubuntu: guía completa – SysOSX: AI & Cloud
05. Fundamentos de redes para el servidor Ubuntu: guía completa – SysOSX: AI & Cloud
06. Instalar y gestionar software en el servidor Ubuntu: guía completa – SysOSX: AI & Cloud
07.Aplicar parches y actualizar el servidor Ubuntu: guía completa – SysOSX: AI & Cloud
08. Proteger tu servidor Ubuntu: pasos prácticos de endurecimiento y protección – SysOSX: AI & Cloud
09. Auditoría y registro de servidores Ubuntu
11. Registro centralizado para el servidor Ubuntu: una guía imprescindible – SysOSX: AI & Cloud
12. Auditoría y cumplimiento para el servidor Ubuntu: prácticas recomendadas – SysOSX: AI & Cloud
Requisitos previos
Para seguir esta guía, asegúrate de tener:
- Un servidor Ubuntu (se recomienda la versión 20.04 o posterior).
- Una cuenta de usuario con privilegios
sudo. - Varios nombres de dominio que apunten a la dirección IP de tu servidor.
- Conocimientos básicos de comandos de Linux.
Parte 1: alojar varios sitios web con Apache
Paso 1: instalar el servidor web Apache
Si Apache aún no está instalado, ejecuta el siguiente comando:
sudo apt update && sudo apt install apache2 -y
Paso 2: configurar hosts virtuales para cada sitio web
Apache usa hosts virtuales para servir varios sitios web desde un servidor. Cada sitio web tendrá su propio archivo de configuración de host virtual.
Crear directorios para los sitios web
- Crea directorios independientes para cada sitio web:
sudo mkdir -p /var/www/website1.com /var/www/website2.com
- Asigna la propiedad de estos directorios a tu cuenta de usuario:
sudo chown -R $USER:$USER /var/www/website1.com /var/www/website2.com
Crear archivos de configuración de hosts virtuales
- Crea un archivo de configuración para el primer sitio web:
sudo nano /etc/apache2/sites-available/website1.com.conf
- Agrega la siguiente configuración:
<VirtualHost *:80>
ServerName website1.com
ServerAlias www.website1.com
DocumentRoot /var/www/website1.com
ErrorLog ${APACHE_LOG_DIR}/website1_error.log
CustomLog ${APACHE_LOG_DIR}/website1_access.log combined
</VirtualHost>
- Crea un archivo de configuración para el segundo sitio web:
sudo nano /etc/apache2/sites-available/website2.com.conf
- Agrega la siguiente configuración:
<VirtualHost *:80>
ServerName website2.com
ServerAlias www.website2.com
DocumentRoot /var/www/website2.com
ErrorLog ${APACHE_LOG_DIR}/website2_error.log
CustomLog ${APACHE_LOG_DIR}/website2_access.log combined
</VirtualHost>
Habilitar hosts virtuales
- Habilita las configuraciones de hosts virtuales:
sudo a2ensite website1.com.conf
sudo a2ensite website2.com.conf
- Recarga Apache para aplicar los cambios:
sudo systemctl reload apache2
Paso 3: probar la configuración de Apache
- Crea un archivo
index.htmlsencillo para cada sitio web:
echo "<h1>Welcome to Website 1</h1>" > /var/www/website1.com/index.html
echo "<h1>Welcome to Website 2</h1>" > /var/www/website2.com/index.html
- Visita
http://website1.comyhttp://website2.comen tu navegador para verificar la configuración.

Paso 4: proteger los sitios web con SSL/TLS
Instalar Certbot
Instala Certbot con el plugin de Apache:
sudo apt install certbot python3-certbot-apache -y
Obtener certificados SSL
Ejecuta Certbot para cada sitio web:
sudo certbot --apache -d website1.com -d www.website1.com
sudo certbot --apache -d website2.com -d www.website2.com
Certbot configurará SSL automáticamente para ambos sitios web y redirigirá el tráfico HTTP a HTTPS.
Parte 2: alojar varios sitios web con Nginx
Paso 1: instalar el servidor web Nginx
Si Nginx aún no está instalado, ejecuta:
sudo apt update && sudo apt install nginx -y
Paso 2: configurar bloques de servidor para cada sitio web
Nginx usa bloques de servidor (similares a los hosts virtuales de Apache) para servir varios sitios web desde un servidor.
Crear directorios para los sitios web
- Crea directorios independientes para cada sitio web:
sudo mkdir -p /var/www/website1.com /var/www/website2.com
- Asigna la propiedad de estos directorios a tu cuenta de usuario:
sudo chown -R $USER:$USER /var/www/website1.com /var/www/website2.com
Crear archivos de configuración de bloques de servidor
- Crea un archivo de configuración para el primer sitio web:
sudo nano /etc/nginx/sites-available/website1.com
- Agrega la siguiente configuración:
server {
listen 80;
server_name website1.com www.website1.com;
root /var/www/website1.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
error_log /var/log/nginx/website1_error.log;
access_log /var/log/nginx/website1_access.log;
}
- Crea un archivo de configuración para el segundo sitio web:
sudo nano /etc/nginx/sites-available/website2.com
- Agrega la siguiente configuración:
server {
listen 80;
server_name website2.com www.website2.com;
root /var/www/website2.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
error_log /var/log/nginx/website2_error.log;
access_log /var/log/nginx/website2_access.log;
}
Habilitar bloques de servidor
- Crea enlaces simbólicos para habilitar los bloques de servidor:
sudo ln -s /etc/nginx/sites-available/website1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/website2.com /etc/nginx/sites-enabled/
- Prueba la configuración de Nginx:
sudo nginx -t
- Recarga Nginx para aplicar los cambios:
sudo systemctl reload nginx
Paso 3: probar la configuración de Nginx
- Crea un archivo
index.htmlsencillo para cada sitio web:
echo "<h1>Welcome to Website 1</h1>" > /var/www/website1.com/index.html
echo "<h1>Welcome to Website 2</h1>" > /var/www/website2.com/index.html
- Visita
http://website1.comyhttp://website2.comen tu navegador para verificar la configuración.
Paso 4: proteger los sitios web con SSL/TLS
Instalar Certbot
Instala Certbot con el plugin de Nginx:
sudo apt install certbot python3-certbot-nginx -y
Obtener certificados SSL
Ejecuta Certbot para cada sitio web:
sudo certbot --nginx -d website1.com -d www.website1.com
sudo certbot --nginx -d website2.com -d www.website2.com
Certbot configurará SSL automáticamente para ambos sitios web y redirigirá el tráfico HTTP a HTTPS.
Referencias
Conclusión
Alojar varios sitios web en un solo servidor Ubuntu es una forma práctica y rentable de gestionar aplicaciones web o dominios. Tanto si usas Apache como Nginx, el proceso consiste en crear directorios, configurar hosts virtuales o bloques de servidor y proteger tus sitios web con certificados SSL/TLS usando Certbot. Si sigues esta guía, podrás alojar varios dominios o subdominios de forma eficiente y asegurarte de que tu servidor está optimizado para la escalabilidad y la seguridad.
Tanto Apache como Nginx son servidores web potentes, y la elección entre ellos suele depender de tus necesidades concretas. Apache ofrece amplias opciones de configuración y compatibilidad, mientras que Nginx destaca en rendimiento y gestión de conexiones simultáneas. Elijas lo que elijas, esta guía te da los conocimientos básicos para gestionar varios sitios web de forma eficaz.
No te pierdas el próximo tema: Gestionar el almacenamiento y los discos en un servidor Ubuntu En esta próxima guía, aprenderás a configurar la inicialización de discos, crear particiones para distintos sistemas de archivos y ampliar discos, incluido el montaje en el sistema de archivos. ¡No te lo pierdas!
7 thoughts on “14. Host Multiple Websites on a single Ubuntu Server: Useful tips”