¿Cómo obtengo variables de ubicación en nginx?


12

La ubicación de nginx conf:

location ~/photos/resize/(\d+)/(\d+) {
    # Here var1=(\d+), var2=(\d+)
}

¿Cómo obtengo variables de ubicación en nginx?

Respuestas:


17

La expresión regular funciona más o menos como en cualquier otro lugar que la tenga.

location ~/photos/resize/(\d+)/(\d+) {
  # use $1 for the first \d+ and $2 for the second, and so on.
}

Ver ejemplos en el wiki de nginx también puede ayudar, http://wiki.nginx.org/Configuration


11

Además de las respuestas anteriores, también puede establecer los nombres de los grupos de expresiones regulares capturadas para que sean más fáciles de consultar más adelante;

location ~/photos/resize/(?<width>(\d+))/(?<height>(\d+)) {
  # so here you can use the $width and the $height variables
}

vea NGINX: verifique si $ remote_user equivale a la primera parte de la ubicación para ver un ejemplo de uso.


Esto es aparentemente necesario, si también hay otra ubicación anidada con otros grupos de captura de expresiones regulares y expresiones regulares. Porque dentro de esa otra ubicación, $1 $2 $3etc. , se referirá a los valores de la expresión regular anidada, sobrescribiendo la $1 $2 ...expresión regular externa. Un alias /$1en el exterior de expresiones regulares, utilizará los $1del interior de expresiones regulares, que probablemente es el resultado en el archivo no encontrado.
KajMagnus

1
Creo que puedes escribir en (?<width>\d+)lugar de (?<width>(\d+)), o hay alguna otra razón para esto, ¿quizás también para obtener un resultado $1tan bueno $width?
Cameron Kerr

2

Puedes probar esto:

location ~ ^/photos/resize/.+ {
    rewrite ^/photos/resize/(\d+)/(\d+) /my_resize_script.php?w=$1&h=$2 last;
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.