Come posso ottenere variabili dalla posizione in nginx?


11

La posizione da nginx conf:

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

Come posso ottenere variabili dalla posizione in nginx?

Risposte:


16

Il regex funziona praticamente come in ogni altro posto che lo possiede.

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

Guardare esempi sul wiki di nginx può anche aiutare, http://wiki.nginx.org/Configuration


10

Oltre alle risposte precedenti, è anche possibile impostare i nomi dei gruppi acquisiti regex in modo che possano essere più facilmente riferiti in seguito;

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

vedi NGINX: controlla se $ remote_user è uguale alla prima parte della posizione per un esempio di utilizzo.


Ciò è apparentemente necessario, se esiste anche un'altra posizione nidificata con un altro gruppo di acquisizione regex e regex. Perché all'interno di quell'altra posizione, $1 $2 $3etc farà riferimento ai valori della regex nidificata, sovrascrivendo la $1 $2 ...regex esterna. Un alias /$1in esterno regex, utilizzerà il $1dal interna regex, che probabilmente i risultati nel file-not-found.
KajMagnus,

Penso che si può solo scrivere (?<width>\d+)al posto di (?<width>(\d+)), o c'è qualche altra ragione per questo - forse per ottenere anche $1così come $width?
Cameron Kerr,

2

Puoi provare questo:

location ~ ^/photos/resize/.+ {
    rewrite ^/photos/resize/(\d+)/(\d+) /my_resize_script.php?w=$1&h=$2 last;
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.