Guía paso a paso para instalar Nginx en Debian 12, gestionar el servicio con systemd, crear un virtual host y habilitar HTTPS con Let’s Encrypt. Para clientes Boxis y administradores de sistemas.
Instalar y configurar Nginx en Debian 12 (Bookworm)
Última actualización: marzo de 2026
Tiempo de lectura: ~12 minutos
Audiencia: administradores de sistemas y usuarios avanzados con un servidor Debian 12.
Nginx es un servidor HTTP de alto rendimiento y un proxy inverso. En Debian 12 (Bookworm) encaja bien con systemd y resulta útil delante de PHP, Node.js o APIs. Esta guía cubre una instalación ordenada, recomendaciones básicas de seguridad, un virtual host mínimo y, opcionalmente, TLS con Let’s Encrypt.
Qué obtendrá
- Nginx instalado desde los repositorios de Debian y el servicio comprobado.
- Puertos HTTP/HTTPS abiertos (ejemplo con UFW).
- Raíz de documentos dedicada y un bloque
serverpropio. - Opcional: certificado Let’s Encrypt y renovación automática.
Requisitos previos
- Servidor Debian 12 con acceso SSH.
- Cuenta de usuario con privilegios
sudo(evite trabajar siempre comoroot). - Nombre DNS (p. ej.
app.example.com) apuntando a la IP pública si desea HTTPS y renovación automática. - Conocimientos básicos de la línea de comandos.
Nota Boxis: en alojamiento gestionado por Boxis, los cambios a nivel de servidor pueden estar restringidos; abra un ticket antes de modificar la pila web en entornos compartidos.
1. Actualizar índices de paquetes e instalar Nginx
sudo apt update
sudo apt install -y nginx
Debian ofrece una versión probada de Nginx; los repositorios de terceros solo son necesarios si requiere módulos concretos.
2. Cortafuegos: permitir HTTP y HTTPS (UFW)
Si UFW está activo:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
sudo ufw status
Con nftables o grupos de seguridad en la nube, abra TCP 80 y TCP 443 allí.
3. Gestionar Nginx con systemd
| Acción | Comando |
|---|---|
| Habilitar al arranque | sudo systemctl enable nginx |
| Iniciar | sudo systemctl start nginx |
| Estado | sudo systemctl status nginx |
| Recargar configuración | sudo systemctl reload nginx |
| Probar sintaxis | sudo nginx -t |
Tras editar la configuración, ejecute siempre nginx -t antes de recargar.
4. Ubicación de la configuración en Debian
Estructura habitual:
- Configuración principal:
/etc/nginx/nginx.conf - Sitios:
/etc/nginx/sites-available/(enlaces ensites-enabled/) - Extra:
/etc/nginx/conf.d/*.conf
Prefiera sites-available / sites-enabled para activar o desactivar sitios sin borrar archivos.
5. Crear un virtual host (bloque server)
Ejemplo: app.example.com con archivos en /var/www/app.example.com/html.
5.1 Directorios y página de prueba
sudo mkdir -p /var/www/app.example.com/html
echo '<!DOCTYPE html><html><head><meta charset="utf-8"><title>OK</title></head><body><h1>It works</h1></body></html>' | sudo tee /var/www/app.example.com/html/index.html
sudo chown -R www-data:www-data /var/www/app.example.com
5.2 Archivo de configuración
Cree /etc/nginx/sites-available/app.example.com.conf:
server {
listen 80;
listen [::]:80;
server_name app.example.com;
root /var/www/app.example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Habilite el sitio:
sudo ln -sf /etc/nginx/sites-available/app.example.com.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Compruebe con el navegador o curl -I http://app.example.com.
6. HTTPS con Let’s Encrypt
sudo apt install -y certbot python3-certbot-nginx
Obtenga el certificado (ajuste correo y dominio):
sudo certbot --nginx -d app.example.com -m usted@example.com --agree-tos --non-interactive
Verifique la renovación:
sudo certbot renew --dry-run
La renovación suele gestionarla un timer de systemd o cron; consulte systemctl list-timers | grep certbot.
7. Buenas prácticas
- Prefiera
reloadfrente arestarttras cambios de configuración. - Registros por sitio si el tráfico es alto (
access_log/error_log). server_tokens off;si la política lo permite.- PHP o aplicaciones:
fastcgi_passa PHP-FPM oproxy_passal upstream coherente. - Copia de seguridad de
/etc/nginx/antes de cambios grandes.
8. Resolución rápida de incidencias
| Síntoma | Qué revisar |
|---|---|
502 Bad Gateway |
Aplicación no disponible; proxy_pass / fastcgi_pass incorrecto. |
403 Forbidden |
Permisos; ruta root; SELinux/AppArmor. |
| Configuración rechazada | sudo nginx -t y corrija las líneas indicadas. |
| Fallo al renovar el certificado | DNS sigue apuntando aquí; puerto 80 accesible para HTTP-01. |
9. Resumen
Ha instalado Nginx en Debian 12, abierto los puertos web, creado un virtual host y, opcionalmente, habilitado HTTPS con Certbot. En producción, refine registros, límites de peticiones y salud de los servicios de fondo.
Temas relacionados
- Búsqueda en la base de conocimiento Boxis:
/{lang}/knowledgebase/search/ - Alojamiento y DNS: categoría Alojamiento y dominios cuando esté disponible.
Guía orientativa; los comandos pueden variar según la imagen y las personalizaciones.