2012-10-03 23 views
13

Me pregunto cómo sé si una ubicación en particular [s] se utilizó para procesar la solicitud en nginx.nginx. Pruebe qué ubicación usé para procesar la solicitud

ej .:

# 1 
location/{} 

# 2 
location ~ /[\w\-]+\.html {} 

# 3 
location ~ /\w+\.html {} 

¿Cómo sé si URI como /mysite es procesada por tercera ubicación y no segundo? que tienden a utilizar add_header para este asunto:

location/{ 
    add_header location 1; 
} 

location ~ /(\w+\-)\.html { 
    add_header location 2;  
} 

location @named { 
    add_header location named; 
} 

Y me gustaría saber es que hay una solución mejor o lo utiliza usted personalmente para fines de depuración?

+5

Esto sólo añade la cabecera si su código de respuesta HTTP es 200, 204, 301, 302 o 304. Por lo tanto, no le ayudará a realizar un seguimiento de 404:/ – Air

Respuesta

7

El truco add_header es cómo lo haría.

estoy en el trabajo en este momento, así que no puedo probar, pero que posiblemente podría conseguir algo en el archivo de registro que se establece el nivel de error_log:

  • debug: eres nginx tiene que ser construido utilizando --with-debug para que esto funcione, se puede comprobar que con el comando nginx -V
  • notice: si el registro de depuración no está activado
9

Una palabra de advertencia en este enfoque. He encontrado que es una mala idea usar location como su cabecera de depuración, ya que Location es un encabezado real utilizado por la respuesta HTTP 301.

Así que si (como yo) en su prueba se termina con esto:

HTTP/1.1 301 Moved Permanently 
... 
Location: http://mydomain.com/banana/ 
location: banana 

Entonces su navegador se volverá loco e informará Duplicate headers received from server. Entonces use locationdebug o algo seguro.

+0

plátano y limón es mejor que foo y bar! :-) –

12

Si solo quiere ver qué bloque se utilizó, y no le importa devolver resultados válidos de otro modo, podría ser más sencillo usar return en lugar de add_header.

location/{ 
    return 200 'location 1'; 
} 

location ~ /(\w+\-)\.html { 
    return 200 'location 2';  
} 

location @named { 
    return 200 'location named'; 
} 
+0

la mejor respuesta que he visto sobre la prueba de uris. – 0xff00ff

Cuestiones relacionadas