Administración de Nginx en un VPS
Un mapa estructurado de la administración de Nginx para propietarios de VPS. Cubre qué hace Nginx, cuándo usarlo y enlaces a cada tutorial necesario para producción.
Nginx impulsa una gran parte de la web. Sirve archivos estáticos, redirige solicitudes a aplicaciones backend, termina TLS y balancea la carga entre múltiples servidores. Todo desde un único proceso con una huella de memoria reducida. Esta guía traza un mapa de la administración de Nginx en un VPS, desde la instalación hasta la monitorización en producción.
Esta página es un mapa. Cubre qué hace Nginx, cuándo importa cada funcionalidad y enlaza a tutoriales específicos para cada tema. Ya sea que estés desplegando tu primer proyecto personal o ejecutando un endpoint de inferencia IA detrás de un reverse proxy, empieza aquí y sigue el camino que se ajuste a tu caso de uso.
Qué hace Nginx
Nginx (pronunciado "engine-x") es un servidor web y reverse proxy basado en eventos. Fue creado en 2004 para resolver el problema C10K: manejar 10.000 conexiones simultáneas en un único servidor. A diferencia de servidores con un hilo por conexión como el modelo prefork de Apache, Nginx usa un bucle de eventos asíncrono. Un solo proceso worker gestiona miles de conexiones sin crear un nuevo hilo para cada una.
En un VPS, eso se traduce en:
- Bajo consumo de memoria. Un proceso worker de Nginx típico usa 2-10 MB de RAM. Los workers prefork de Apache usan 10-40 MB cada uno.
- Alta concurrencia. Un solo worker puede manejar miles de conexiones simultáneas. El factor limitante suele ser el sistema operativo, no Nginx.
- Rendimiento predecible bajo carga. Como Nginx no crea nuevos procesos por solicitud, el consumo de memoria se mantiene estable cuando el tráfico aumenta.
La versión estable actual es 1.28.x (1.28.2 a marzo de 2026). La rama mainline (1.29.x) recibe las nuevas funcionalidades primero. La rama estable solo recibe correcciones de errores críticos. Para un VPS en producción, la rama estable es la elección correcta.
Todos los tutoriales de esta serie se basan en Nginx instalado desde los repositorios oficiales en Debian 12 o Ubuntu 24.04. Ambos tienen soporte activo y están ampliamente desplegados en servidores de producción. Los repositorios por defecto de la distribución suelen incluir versiones más antiguas de Nginx. El repositorio oficial te proporciona la última versión estable con las claves de firma correctas.
Casos de uso principales
Nginx cumple cuatro roles en un VPS. La mayoría de las configuraciones de producción usan dos o más simultáneamente.
Servidor de archivos estáticos
Nginx sirve archivos HTML, CSS, JavaScript, imágenes y fuentes directamente desde disco. La llamada al sistema sendfile mueve datos del disco al socket de red sin copiarlos a través del espacio de usuario. Esto evita la sobrecarga de leer el contenido de archivos en la memoria de la aplicación y volver a escribirlos.
Combinado con compresión gzip o brotli y cabeceras de caché (expires, Cache-Control), Nginx entrega recursos estáticos más rápido que cualquier servidor de aplicaciones. Un proceso Node.js o Python sirviendo archivos estáticos desperdicia ciclos de CPU en trabajo que Nginx maneja a nivel de kernel.
Para sitios estáticos, aplicaciones de página única o frontends full-stack, Nginx es la herramienta adecuada. Incluso con backends dinámicos, delegar los recursos estáticos a Nginx libera tu aplicación para las solicitudes que requieren lógica.
Reverse proxy
Un reverse proxy se sitúa entre los clientes y tu aplicación backend. Nginx recibe la solicitud HTTP, la reenvía a un proceso backend (Node.js, Python, Go, Ruby o cualquier servicio HTTP) y devuelve la respuesta al cliente.
¿Por qué no exponer el backend directamente? Varias razones:
- Terminación TLS en un solo lugar. Configuras los certificados una vez en Nginx en lugar de en cada aplicación.
- Reenvío de cabeceras para pasar la IP real del cliente al backend mediante
X-Real-IPyX-Forwarded-For. Sin esto, tu aplicación solo ve127.0.0.1. - Almacenamiento en búfer que absorbe las conexiones lentas de los clientes. Nginx lee la respuesta completa de tu backend rápido, libera la conexión del backend y envía la respuesta al cliente lento a su ritmo. Tu backend procesa la siguiente solicitud en vez de esperar.
- Soporte WebSocket que funciona a través de Nginx con las cabeceras
UpgradeyConnectioncorrectas.
Así es también como pones una interfaz web delante de herramientas de IA autoalojadas. Una instancia de Ollama ejecutándose en localhost:11434 permanece fuera del internet público mientras Nginx gestiona la autenticación y HTTPS en el frontend. El tutorial Cómo configurar Nginx como reverse proxy incluye una configuración completa de Ollama con ajuste de timeouts para solicitudes de inferencia que pueden tardar 30 segundos o más.
Terminación TLS
Nginx gestiona el handshake TLS y el descifrado para que las aplicaciones backend reciban HTTP plano en localhost. Esto centraliza la gestión de certificados y descarga las operaciones criptográficas intensivas en CPU de tu código de aplicación.
El handshake TLS implica criptografía asimétrica (intercambio de claves RSA o ECDSA), que es órdenes de magnitud más costosa que el cifrado simétrico para la transferencia de datos. Al delegar esto en Nginx, tus procesos backend se mantienen enfocados en la lógica de negocio.
Con Let's Encrypt y Certbot, obtienes certificados gratuitos con renovación automática. Las directivas ssl_certificate y ssl_certificate_key de Nginx apuntan a los archivos del certificado. Un timer de systemd ejecuta certbot renew automáticamente. El tutorial Configurar SSL/TLS de Let's Encrypt para Nginx en Debian 12 y Ubuntu 24.04 cubre la configuración completa incluyendo OCSP stapling y redirección de HTTP a HTTPS.
Para despliegues europeos donde la soberanía de datos importa, gestionar la terminación TLS en tu propio VPS significa que el tráfico cifrado solo se descifra en infraestructura que tú controlas. Ningún CDN o balanceador de carga de terceros ve tu tráfico en texto plano.
Balanceador de carga
Cuando un solo backend no es suficiente, Nginx distribuye las solicitudes entre múltiples servidores upstream. Soporta tres algoritmos integrados:
- Round-robin (por defecto): las solicitudes van a cada backend por turno
- Least connections: las solicitudes van al backend con menos conexiones activas
- IP hash: las solicitudes de la misma IP de cliente siempre van al mismo backend (útil para afinidad de sesión)
Las verificaciones de salud eliminan automáticamente los backends que no responden del pool. Si un backend devuelve errores o no responde, Nginx deja de enviarle tráfico hasta que se recupera.
Para la mayoría de las configuraciones VPS, el balanceo de carga entra en juego cuando escalas horizontalmente con múltiples instancias de aplicación o ejecutas despliegues blue-green con actualizaciones sin tiempo de inactividad.
Lo que necesitas
Antes de empezar cualquier tutorial de esta serie, necesitas:
- Un VPS con Debian 12 o Ubuntu 24.04 con acceso root o sudo. Los planes VPS de Virtua Cloud funcionan directamente para todo lo que se cubre aquí.
- Acceso SSH con autenticación por clave. La autenticación por contraseña debe estar desactivada. Los bots de fuerza bruta empiezan a atacar SSH a los pocos minutos de que un servidor está en línea.
- Un nombre de dominio con un registro A apuntando a la dirección IP de tu servidor. Necesario para los certificados TLS. Opcional para el tutorial de instalación.
- Comodidad básica con la línea de comandos de Linux: navegar directorios, editar archivos con
vimonano, ejecutar comandos consudo.
Si eres nuevo en la configuración de VPS, configura las claves SSH y un firewall antes de tocar Nginx. Un servidor expuesto a internet sin estos básicos es un riesgo.
La serie de tutoriales
Cada artículo a continuación se centra en un tema. Se construyen unos sobre otros en orden, pero puedes saltar a cualquier artículo si ya tienes los prerrequisitos cubiertos.
1. Instalar Nginx
Pon Nginx en funcionamiento desde los repositorios oficiales. Cubre Debian 12 y Ubuntu 24.04 con verificación de clave GPG, instalación con apt, gestión con systemd (start, stop, reload, status) y reglas de firewall para ufw y nftables. Incluye pasos de verificación con curl y ss para confirmar que Nginx está escuchando en los puertos correctos.
Instalar Nginx en Debian 12 y Ubuntu 24.04 desde el repositorio oficial
2. Entender la estructura del archivo de configuración
Antes de editar cualquier configuración, entiende cómo Nginx la organiza. El contexto principal, los bloques events, http, server y location forman una jerarquía. Las directivas establecidas en un contexto padre son heredadas por los contextos hijos a menos que se sobrescriban explícitamente. Este artículo cubre todos los contextos principales (incluyendo stream y upstream), la directiva include para configuraciones modulares y el patrón sites-available/sites-enabled usado en Debian y Ubuntu.
Estructura de los archivos de configuración de Nginx
3. Configurar bloques de servidor
Aloja múltiples dominios en un solo VPS. Los bloques de servidor (el equivalente en Nginx de los hosts virtuales de Apache) te permiten ejecutar sitios separados con configuraciones, logs de acceso, logs de errores y raíces de documentos independientes. Cubre la estructura de directorios, la creación de archivos de bloques de servidor, la activación y desactivación de sitios con enlaces simbólicos, la directiva default_server, el orden de coincidencia de server_name y el logging por vhost.
Server Blocks de Nginx: Aloja Varios Dominios en un VPS
4. Configurar SSL/TLS con Let's Encrypt
Añade HTTPS a tus sitios usando Certbot y Let's Encrypt. Cubre los prerrequisitos DNS, la instalación de Certbot basada en snap (el método actualmente recomendado), la emisión de certificados con el plugin de Nginx, la renovación automática mediante timers de systemd, la redirección de HTTP a HTTPS y OCSP stapling. Cada paso incluye un comando de verificación.
Configurar SSL/TLS de Let's Encrypt para Nginx en Debian 12 y Ubuntu 24.04
5. Configurar un reverse proxy
Coloca Nginx delante de tus aplicaciones backend. Cubre la sintaxis de proxy_pass, el reenvío de cabeceras (X-Real-IP, X-Forwarded-For, X-Forwarded-Proto), el proxy WebSocket con cabeceras Upgrade, los controles de almacenamiento en búfer (proxy_buffering, proxy_buffer_size) y el ajuste de timeouts (proxy_connect_timeout, proxy_read_timeout). Incluye un ejemplo funcional de proxy hacia una instancia Ollama local con timeouts extendidos para solicitudes de inferencia que pueden tardar 30 segundos o más.
Cómo configurar Nginx como reverse proxy
6. Fortalecer la seguridad
Blinda Nginx más allá de los valores por defecto. Cada directiva está asociada con la amenaza específica que mitiga. Cubre cabeceras de seguridad (CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy), ocultación de tokens del servidor, desactivación de métodos HTTP no utilizados, restricciones de acceso por IP, selección de suites de cifrado TLS usando el perfil Modern de Mozilla y HSTS con consideraciones de precarga. Verificación mediante securityheaders.com y SSL Labs.
Hardening de seguridad de Nginx en Ubuntu y Debian
7. Optimizar el rendimiento
Optimiza Nginx para el tráfico de producción. Cubre worker_processes auto y el dimensionamiento de worker_connections, epoll y multi_accept, ajuste de keepalive, configuración de gzip (niveles de compresión, tipos MIME, longitud mínima), configuración del módulo brotli, caché de archivos estáticos con expires y Cache-Control, open_file_cache para reducir I/O de disco, dimensionamiento de buffers proxy y activación de HTTP/2. Incluye una metodología de benchmarking con wrk para medir el impacto de cada cambio.
Para sitios con mucho tráfico, un VPS de alto rendimiento te da más margen para los handshakes TLS y la compresión.
Optimización del rendimiento de Nginx en un VPS
8. Limitación de tasa y protección DDoS
Protege tus endpoints contra abusos y ataques volumétricos. Cubre limit_req_zone y limit_req con los parámetros burst y nodelay, limit_conn para limitación de conexiones, páginas de error 429 personalizadas, modo dry_run para pruebas seguras sin bloquear tráfico real e integración con fail2ban con un filtro funcional y configuración de jail para banear reincidentes a nivel de firewall.
Limitación de tasa en Nginx y protección contra DDoS
9. Registro y monitorización
Configura observabilidad de nivel producción. Cubre definiciones personalizadas de log_format incluyendo un formato JSON estructurado con escape=json (listo para recolectores de logs como Filebeat o Vector), registro condicional con map para filtrar health checks y recursos estáticos, rotación de logs con una configuración de logrotate, análisis en tiempo real con GoAccess y métricas Prometheus mediante el módulo stub_status y prometheus-nginxlog-exporter.
10. Cheatsheet de Nginx
Referencia rápida para operaciones diarias. Comandos systemd, fragmentos de configuración comunes (redirección, proxy_pass, bloque SSL, limitación de tasa, gzip), ubicaciones de archivos de log, depuración con nginx -T (mostrar la configuración fusionada completa) y curl -I (inspeccionar cabeceras de respuesta), y códigos de error comunes (502, 504, 413, 403) con sus causas y soluciones específicas de Nginx.
Cheatsheet de Nginx: comandos, fragmentos de configuración y solución de errores
Cuándo dejar que otro se encargue
Administrar Nginx en producción implica estar al tanto de parches de seguridad, renovaciones de certificados, desviaciones de configuración y rotación de logs. Si prefieres centrarte en el código de tu aplicación y dejar la infraestructura a alguien más, el hosting de servidores gestionados se encarga de eso. Mantienes toda la flexibilidad de Nginx sin la carga de mantenimiento.
Por dónde empezar
¿Desplegando tu primer sitio? Empieza con el tutorial de instalación (Instalar Nginx en Debian 12 y Ubuntu 24.04 desde el repositorio oficial) y sigue la serie en orden.
¿Ya tienes Nginx funcionando? Salta al tema que necesites. El artículo sobre la estructura de configuración (Estructura de los archivos de configuración de Nginx) llena los vacíos si has estado copiando y pegando configuraciones sin entender la jerarquía.
¿Ejecutando cargas de trabajo de IA? Ve directamente al tutorial de reverse proxy (Cómo configurar Nginx como reverse proxy) para la configuración del reverse proxy de Ollama. Luego asegúralo con la guía de fortalecimiento de seguridad (Hardening de seguridad de Nginx en Ubuntu y Debian) y el tutorial de limitación de tasa (Limitación de tasa en Nginx y protección contra DDoS).
¿Solo necesitas un comando rápido? El cheatsheet (Cheatsheet de Nginx: comandos, fragmentos de configuración y solución de errores) tiene todo en una sola página.
¿Listo para probarlo?
Aloja tus aplicaciones web en un VPS fiable. →Artículos relacionados
- Cómo configurar Nginx como reverse proxy
- Instalar Nginx en Debian 12 y Ubuntu 24.04 desde el repositorio oficial
- Estructura de los archivos de configuración de Nginx
- Server Blocks de Nginx: Aloja Varios Dominios en un VPS
- Configurar SSL/TLS de Let's Encrypt para Nginx en Debian 12 y Ubuntu 24.04
- Hardening de seguridad de Nginx en Ubuntu y Debian
- Cheatsheet de Nginx: comandos, fragmentos de configuración y solución de errores
- Optimización del rendimiento de Nginx en un VPS