Como obter variáveis ​​de localização no nginx?

12

A localização do nginx conf:

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

Como obter variáveis ​​de localização no nginx?

satels
fonte

Respostas:

17

O regex funciona como em qualquer outro lugar que o possua.

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

Olhar exemplos no wiki do nginx também pode ajudar, http://wiki.nginx.org/Configuration

Nexerus
fonte
11

Além das respostas anteriores, você também pode definir os nomes dos grupos capturados em expressões regulares para facilitar a referência posteriormente;

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

consulte NGINX: verifique se $ remote_user é igual à primeira parte do local para obter um exemplo de uso.

dawez
fonte
Aparentemente, isso é necessário, se houver também outro local aninhado com outro grupo de captura de expressão regular e expressão regular. Porque dentro desse outro local, $1 $2 $3etc , se referirá aos valores da regex aninhada, substituindo-a $1 $2 ...na regex externa. Um alias /$1no regex externo usará o $1do regex interno , o que provavelmente resulta em um arquivo não encontrado.
precisa saber é o seguinte
1
Eu acho que você pode simplesmente escrever em (?<width>\d+)vez de (?<width>(\d+)), ou há alguma outra razão para isso - talvez também seja $1tão bom quanto $width?
Cameron Kerr
2

Você pode tentar o seguinte:

location ~ ^/photos/resize/.+ {
    rewrite ^/photos/resize/(\d+)/(\d+) /my_resize_script.php?w=$1&h=$2 last;
}
bearcat
fonte