Crear un bloque de servidor en Nginx¶
Un bloque de servidor es una directiva Nginx que define la configuración de un dominio específico, lo que le permite ejecutar más de un sitio web en un solo servidor, optimizando recursos y gestión. Para cada sitio web, se puede definir la raíz (el directorio que contiene los archivos), crear una política de seguridad separada, usar diferentes certificados SSL y mucho más.
Requisitos Previos¶
Antes de continuar, asegúrese de tener:
Un servidor Linux actualizado con Nginx instalado.
Acceso root.
Un nombre de dominio apuntando a la dirección IP pública del servidor.
En Debian y derivados se usa convencionalmente
/etc/nginx/sites-available/y/etc/nginx/sites-enabled/para organizar bloques (no es obligatorio, pero es la práctica recomendada).
1: Crear un directorio para el sitio web¶
Básicamente, crearemos un directorio separado para cada dominio que queramos alojar en nuestro servidor dentro del directorio /var/www.
# mkdir -p /var/www/dominio.edu.ar/html
Asignar la propiedad y establecer los permisos correctos:
# chown -R www-data:www-data /var/www/dominio.edu.ar
# chmod -R 755 /var/www/dominio.edu.ar
2: Crear una página de prueba (opcional¶
Para verificar la configuración se puede crear un archivo index.html en el directorio /var/www/dominio.edu.ar/html:
echo "<html><head><title>Pagina de Prueba</title></head><body><h1>¡Funciona!</h1></body></html>" > /var/www/dominio.edu.ar/html/index.html
3: Crear un archivo de configuración para el nuevo sitio¶
Creamos un nuevo archivo de configuración /etc/nginx/sites-available/dominio.edu.ar.conf con el siguiente contenido:
server {
listen 80;
listen [::]:80;
server_name dominio.edu.ar www.dominio.edu.ar;
# Redirige www -> no-www (opcional)
if ($host = 'www.dominio.edu.ar') {
return 301 $scheme://dominio.edu.ar$request_uri;
}
root /var/www/dominio.edu.ar/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/dominio.edu.ar-access.log;
error_log /var/log/nginx/dominio.edu.ar-error.log;
}
4: Habilitar la configuración¶
Activa el bloque del servidor vinculando el archivo que acaba de crearse al directorio sites-enabled:
# ln -s /etc/nginx/sites-available/dominio.edu.ar.conf /etc/nginx/sites-enabled/
5: Probar la configuración¶
Es crucial probar la configuración de Nginx en busca de errores antes de reiniciar el servicio:
# nginx -t
5: Reiniciar Nginx¶
Si la prueba de configuración no arroja errores, reiniciar Nginx para aplicar los cambios:
# systemctl restart nginx
6: Ajustar el cortafuegos¶
Si está utilizando un cortafuegos, asegúrese de que el tráfico HTTP y HTTPS esté permitido.
Para usuarios de UFW
# ufw allow 'Nginx HTTP'
Para usuarios de firewalld
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
7: Acceder al sitio web¶
Ingresando dominio.edu.ar en cualquier navegador web debería ver la página HTML de muestra o el contenido que has subido al directorio de tu sitio web.
Buenas prácticas y consejos¶
Usar
nginx -tantes de recargar.Mantener logs separados por sitio (access_log, error_log) para depuración.
En caso de alojar múltiples dominios en el mismo puerto, verificar
server_nameúnicos; nginx elige el bloque según reglas de prioridad.Para entornos de producción, revisar parámetros de seguridad TLS y cabeceras (HSTS, OCSP stapling, ciphers, etc.).