Probador de prioridad y simulador de coincidencia de Nginx Location

Probador de prioridad y simulador de coincidencia de Nginx Location

Simulador interactivo del núcleo C

Guía técnica para probar la coincidencia de bloques location en Nginx y prioridades de modificadores en tiempo real.

Preajustes:
Simulador de URI de solicitud en tiempo real
COINCIDENCIA:location ^~ /static/(0.34ms)
GET
Pruebas rápidas:
#1
log_not_found off; ...Exact match bypasses all other rules instantly
#2
GANADOR
alias /var/www/spa/static/; ...Preferential prefix: Skips all regex tests for static build assets
#3
expires 7d; ...Regex for root-level and un-prefixed media assets
#4
proxy_pass http://backend_upstream; ...Preferential prefix: Directs all /api/ endpoints to backend
#5
root /var/www/spa/dist; ...Catch-all fallback prefix for client-side HTML5 history routing
COINCIDENCIA RESUELTA EN 0.34msHTTP 200 PROCESADO
location ^~ /static/
Fase 2: Prefijo preferente (^~)

El prefijo más largo tiene el modificador "^~". Se omitió por completo la evaluación de expresiones regulares.

Propósito: Preferential prefix: Skips all regex tests for static build assets

Directivas activas ejecutadas:
alias /var/www/spa/static/;
expires 365d;
add_header Cache-Control "public, immutable";

Traza de evaluación paso a paso (6 pasos)

Evaluado en fases estrictamente ordenadas según RFC
Normalización de URI y extracciónnormalization

Codificación porcentual decodificada, barras redundantes colapsadas y cadena de consulta extraída.

Request URI: "/static/css/bundle.css"
Normalized:  "/static/css/bundle.css"
Query:       ""
Tier 1: Exacta (= /favicon.ico)exact

URI "/static/css/bundle.css" != "/favicon.ico".

Prefijo estándar: ^~ /static/ [8]prefix scan

URI begins with prefix "/static/" (length 8).

Prefijo estándar: ^~ /api/prefix scan

URI "/static/css/bundle.css" does not start with "/api/".

Prefijo estándar: (standard) / [1]prefix scan

URI begins with prefix "/" (length 1).

Tier 2: Prefijo sin RegEx (^~ /static/)preferential check

El prefijo más largo tiene el modificador "^~". Se omitió por completo la evaluación de expresiones regulares.

location ^~ /static/ {
  alias /var/www/spa/static/;
  expires 365d;
  add_header Cache-Control "public, immutable";
}

Fidelidad al algoritmo del núcleo de Nginx y RFC

Simula con total fidelidad la mecánica del núcleo C de Nginx: = coincidencia exacta, ^~ prefijo preferente, orden de aparición de expresiones regulares y retroceso al prefijo estándar más largo.

Cero fugas al servidor y latencia cero

Toda la normalización de URI, análisis de expresiones regulares y clasificación por prioridad se ejecutan 100% en la memoria del navegador sin tráfico de red.

Generación de configuración para producción

Exporta al instante bloques de configuración de Nginx limpios y validados, con comentarios explicativos y comandos cURL de diagnóstico.

Referencia técnica y guía de arquitectura

Referencia para Desarrolladores de Nginx Location Match Tester — Guía de referencia

Guía técnica para probar la coincidencia de bloques location en Nginx y prioridades de modificadores en tiempo real.

Parámetros clave y controles

uristring

Ruta URI de solicitud (excluyendo protocolo y dominio) evaluada frente a los bloques location configurados.

Por defecto: "/"
modifier'=' | '^~' | '~' | '~*' | ''

Modificador de prefijo location de Nginx que controla la prioridad de evaluación, omisión de regex y parada temprana.

Por defecto: ""
pathstring

Patrón de prefijo URI o expresión regular compatible con PCRE evaluada frente a la URI normalizada.

Por defecto: "/"
outputTab'trace' | 'batch' | 'ladder' | 'conf'

Pestaña activa para inspeccionar trazas paso a paso, aserciones por lotes, escala de prioridades o configuración nginx.conf.

Por defecto: "trace"
inputMode'visual' | 'raw'

Modo de entrada que alterna entre tarjetas visuales interactivas y análisis directo de texto nginx.conf.

Por defecto: "visual"

Consejos profesionales y mejores prácticas

Priorizar ^~ en estáticos

Usar location ^~ /static/ impide escaneos regex innecesarios al servir archivos estáticos, evitando evaluar directivas posteriores como ~* \.(jpg|png|css)$.

Ordenar regex por frecuencia

Nginx detiene la evaluación de expresiones regulares en el primer bloque ~ o ~* coincidente según el orden del archivo; coloque las rutas más transitadas al inicio.

Usar coincidencia exacta en raíz

Declarar location = / optimiza el procesamiento de solicitudes a la página de inicio en proxies inversos de alto tráfico, evitando recorrer el árbol de prefijos.

Verificar URIs normalizadas

Nginx decodifica caracteres percent-encoded como %20 y fusiona barras duplicadas // antes de evaluar coincidencias. Pruebe siempre variantes crudas y codificadas.

Errores comunes y solución de problemas

Un bloque regex location anula inesperadamente a un bloque de prefijo más largo

Los prefijos sin ^~ solo actúan como reserva si ninguna expresión regular coincide. Añada el modificador ^~ al bloque de prefijo o reordene las reglas regex.

Los parámetros de consulta en la URI no coinciden con la ruta de location

Nginx evalúa directivas location exclusivamente contra $uri, descartando parámetros de consulta ($args). Emplee directivas map o if ($arg_name) para evaluar parámetros.

La expresión regular sensible a mayúsculas ~ falla en extensiones mixtas

Cambie el modificador ~ por ~* para habilitar coincidencia insensible a mayúsculas y manejar extensiones como .JPG y .jpg sin inconsistencias.

Preguntas frecuentes (FAQ)

¿Cuál es el orden estricto de prioridad entre los modificadores de location en Nginx?▼

Nginx evalúa directivas en 5 fases: 1) Coincidencia exacta (=) finaliza de inmediato si coincide; 2) Búsqueda del prefijo más largo en bloques estándar; 3) Si el prefijo más largo tiene ^~, se omite regex y gana; 4) Expresiones regulares (~ y ~*) evaluadas secuencialmente de arriba hacia abajo (la primera que coincida gana); 5) Si ninguna regex coincide, gana el prefijo más largo de la fase 2.

¿Cómo normaliza Nginx las URIs de solicitud antes de evaluar los bloques location?▼

Antes de la comparación, Nginx decodifica caracteres en porcentaje (%20 a espacio, %2F a /), resuelve segmentos relativos . y .., y colapsa múltiples barras oblicuas consecutivas (//) en una sola. La cadena de consulta tras ? se separa en $query_string.

¿Por qué la directiva location no permite filtrar por parámetros de query string ni fragmentos?▼

Según el estándar RFC 3986, la ruta y la consulta son componentes semánticos distintos. Nginx compara directivas location únicamente contra la ruta del recurso. Para enrutar según parámetros de consulta, use $args o $arg_<nombre> con directivas map o reglas de reescritura.

¿Afecta el orden físico de los bloques location de prefijo en nginx.conf al enrutamiento?▼

No. A diferencia de las expresiones regulares (~ y ~*), los bloques de prefijo estándar ("") y ^~ se organizan internamente en un árbol de búsqueda y siempre seleccionan el prefijo más largo coincidente, independientemente de su posición física en el archivo.

¿Se envían a servidores externos las configuraciones analizadas o los casos de prueba?▼

No. Toda la normalización de URIs, la lógica de resolución de directivas location, las pruebas por lotes y la generación de configuración se ejecutan localmente en el motor JavaScript de su navegador.

Herramientas y utilidades relacionadas

Todas las herramientas →