¿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?

satels
fuente

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

Nexerus
fuente
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.

dawez
fuente
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;
}
bearcat
fuente