Cómo configurar hosts virtuales en Nginx en Ubuntu
Configurar hosts virtuales en Nginx le permite alojar múltiples sitios web en un único servidor, teniendo cada sitio web su propio nombre de dominio. Los hosts virtuales de Nginx se configuran mediante “bloques de servidor” que definen los ajustes para cada sitio web. Esta guía le guiará a través de la configuración de hosts virtuales en un servidor Ubuntu con Nginx.
1. Requisitos previos
- Nginx instalado: Asegúrese de que Nginx está instalado en su servidor. Si no es así, instálelo con:
sudo apt update
sudo apt install nginx
- Nombres de dominio: Haz que los nombres de dominio que quieres alojar apunten a la dirección IP de tu servidor. Puede modificar su archivo /etc/hosts para realizar pruebas.
2. Configure directorios para cada sitio web
Cada sitio web debe tener su propio directorio para almacenar los archivos del sitio web. Vamos a crear directorios para dos sitios web de ejemplo, ejemplo1.com y ejemplo2.com.
sudo mkdir -p /var/www/example1.com/html
sudo mkdir -p /var/www/example2.com/html
Conceda la propiedad de estos directorios al usuario Nginx (www-data) para asegurarse de que Nginx tiene los permisos necesarios.
sudo chown -R www-data:www-data /var/www/example1.com/html
sudo chown -R www-data:www-data /var/www/example2.com/html
Establezca los permisos adecuados:
sudo chmod -R 755 /var/www
3. Crear contenido de muestra
Para probar los hosts virtuales, añada archivos HTML de muestra para cada sitio.
Ejemplo1.com:
echo "<h1>Welcome to Example1.com!</h1>" | sudo tee /var/www/example1.com/html/index.html
Example2.com:
echo "<h1>Welcome to Example2.com!</h1>" | sudo tee /var/www/example2.com/html/index.html
4. Crear archivos de configuración de host virtual
Ahora, crearemos un archivo de configuración de bloque de servidor (host virtual) para cada sitio web. Nginx almacena estos archivos de configuración en el directorio /etc/nginx/sites-available/.
Paso 1: Crear configuración para Example1.com
Crea un nuevo archivo de configuración para ejemplo1.com:
sudo nano /etc/nginx/sitios-disponibles/ejemplo1.com
Añade la siguiente configuración
server {
listen 80;
server_name example1.com www.example1.com;
root /var/www/example1.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Paso 2: Crear configuración para Example2.com
Cree un archivo de configuración para ejemplo2.com:
sudo nano /etc/nginx/sites-available/example2.com
Añade la siguiente configuración
server {
listen 80;
server_name example2.com www.example2.com;
root /var/www/example2.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
5. Habilitar los hosts virtuales
Nginx utiliza enlaces simbólicos para habilitar hosts virtuales. Enlaza los archivos de configuración de sites-available a sites-enabled:
sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/example2.com /etc/nginx/sites-enabled/
6. Pruebe la configuración
Para asegurarte de que no hay errores de sintaxis en tu configuración, ejecuta
sudo nginx -t
Si todo es correcto, verás un mensaje de confirmación. Si hay errores, Nginx mostrará detalles para ayudarte a solucionarlos.
7. Reiniciar Nginx
Después de confirmar la configuración, reinicie Nginx para aplicar los cambios:
sudo systemctl restart nginx
8. Acceda a los sitios web
Si los nombres de dominio apuntan a su servidor, ahora debería poder acceder a cada sitio visitándolo:
- http://example1.com
- http://example2.com
Para realizar pruebas locales, puede editar su archivo /etc/hosts para asignar los nombres de dominio a la dirección IP de su servidor. Añade entradas como:
127.0.0.1 example1.com 127.0.0.1 example2.com
Guarde y cierre el archivo y, a continuación, intente acceder a los sitios en su navegador.
9. Activación de HTTPS para cada sitio (opcional)
Para conexiones seguras, puede configurar certificados SSL utilizando Let’s Encrypt. Para activar HTTPS:
Instale certbot:
sudo apt install certbot python3-certbot-nginx
Ejecute el siguiente comando para obtener y configurar certificados SSL para cada dominio:
sudo certbot --nginx -d example1.com -d www.example1.com
sudo certbot --nginx -d example2.com -d www.example2.com
Siga las instrucciones y Certbot configurará automáticamente HTTPS en su configuración de Nginx.
Conclusión
Mediante la configuración de hosts virtuales en Nginx en Ubuntu, puede alojar varios sitios web en un único servidor, cada uno con su propia configuración y contenido. Esta configuración es eficiente y escalable, haciendo de Nginx una excelente opción para alojar múltiples sitios en el mismo servidor.