Saltar al contenido
100% Privacidad — Tus archivos permanecen en tu dispositivo
>_
Español

Validador de Configuración Nginx

Pega un nginx.conf y detecta errores de sintaxis, directivas mal ubicadas y fallos de seguridad comunes — antes de recargar nginx.

Arrastra un archivo .conf aquí, o pega el texto de configuración arriba.

Todo se ejecuta en tu navegador — tu configuración nunca se sube a ningún servidor.

Problemas

Pega arriba una configuración de nginx (o carga el ejemplo) y las comprobaciones aparecerán aquí.

Probador de Regex para Location

Usa el motor de expresiones regulares de JavaScript, no el motor PCRE real de nginx — muy similar, pero no idéntico (sin cuantificadores posesivos/grupos atómicos).

Simulador de Rewrite / Return

Detectar errores de configuración de nginx antes de que lleguen a producción

Un nginx.conf roto suele anunciarse de una de dos maneras desagradables: `nginx -t` se niega a recargar con un enigmático error de número de línea o, peor aún, un `reload` conserva en silencio la configuración antigua (la que funcionaba) en memoria mientras la nueva, rota, queda en disco, de modo que nada parece ir mal hasta el siguiente reinicio completo. Ambas situaciones se evitan detectando antes el mismo tipo de errores, mientras aún estás editando.

El error más común en un nginx.conf real no es exótico: es un punto y coma olvidado. Como la gramática de nginx solo atiende a `;`, `{` y `}` (no a los saltos de línea), un `;` ausente no produce un limpio «línea 12: se esperaba ;» como en la mayoría de los analizadores modernos; en su lugar, el nombre y los argumentos de la siguiente directiva se absorben en silencio como argumentos adicionales de la anterior, a veces sin ningún error hasta que algo más adelante se comporta de forma extraña. La heurística de saltos de línea de esta herramienta vigila justo ese patrón (un nombre de directiva conocido que aparece en mitad de una lista de argumentos en una línea nueva) y lo señala antes de que se convierta en una incidencia de soporte.

La ubicación de las directivas es la segunda trampa habitual: `proxy_pass` solo tiene sentido dentro de un bloque `location` (o `if`), `listen`/`server_name` solo dentro de `server`, y así sucesivamente. Pero el propio analizador de nginx no rechaza una directiva solo porque esté en un lugar inusual si reconoce su nombre en un sentido más amplio, y los mensajes de error apuntan al registro interno de directivas de nginx en lugar de decir «has anidado esto mal». Este validador consulta directamente la tabla de directiva a contexto, de modo que un `proxy_pass` olvidado por accidente a nivel de `http` (fuera de cualquier `server`/`location`) se señala con la línea exacta y no con un simple «la configuración no se pudo cargar».

Más allá de la sintaxis, algunas pequeñas decisiones de configuración tienen consecuencias desproporcionadas para la seguridad: dejar `server_tokens` en su valor por defecto (`on`) entrega tu versión exacta de nginx en cada cabecera de respuesta y página de error por defecto, un reconocimiento gratuito para quien busque un CVE específico de una versión; y usar la variable `$uri`, ya decodificada de URL, dentro de un `return`/`rewrite`/`add_header` (en lugar de la `$request_uri` sin procesar) puede permitir que un atacante inyecte caracteres en el destino de una redirección con ciertas configuraciones. Ninguna de las dos cosas rompe nada visiblemente durante las pruebas normales, y precisamente por eso merecen una pasada específica en lugar de confiar en notarlas a simple vista en una configuración de 200 líneas.

Preguntas frecuentes

¿Sustituye esto a `nginx -t`?

No. `nginx -t` es la única herramienta que comprueba tu configuración con la compilación exacta de nginx y los módulos realmente instalados en tu servidor, y es la última palabra antes de recargar. Este validador detecta el mismo tipo de errores (errores de sintaxis, directivas mal ubicadas, algunos puntos débiles de seguridad) antes incluso de llegar a un servidor con nginx instalado: es útil al editar en local, en un paso de CI o cuando aún no tienes acceso por shell a la máquina de destino.

¿La lista de comprobaciones de seguridad es exhaustiva?

No. Cubre un conjunto pequeño y elegido a propósito de comprobaciones (falta de `server_tokens off;`, `autoindex on;` y `$uri` usado donde `$request_uri` es más seguro), vagamente inspiradas en Gixy, el auditor de configuración de nginx de código abierto. No sustituye a Gixy ni a una auditoría de seguridad completa.

¿Por qué el probador de regex se comporta de forma ligeramente distinta a nginx real?

La coincidencia de `location ~` y `location ~*` en nginx usa PCRE (mediante la biblioteca PCRE incluida en el binario de nginx). Esta herramienta se ejecuta por completo en tu navegador, así que usa el motor RegExp integrado de JavaScript; ambos son muy parecidos para patrones comunes, pero las funciones exclusivas de PCRE, como los cuantificadores posesivos o los grupos atómicos, no se comportarán igual aquí.

¿Mi configuración sale alguna vez de mi navegador?

No. El análisis, la validación y los dos simuladores se ejecutan con JavaScript simple en esta pestaña. No se sube, registra ni envía nada a ningún sitio; incluso puedes desconectarte de internet una vez cargada la página y seguirá funcionando.

Herramientas relacionadas