Wie erhalte ich Variablen vom Speicherort in Nginx?


11

Der Ort von nginx conf:

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

Wie erhalte ich Variablen vom Speicherort in Nginx?

Antworten:


16

Der reguläre Ausdruck funktioniert so ziemlich wie an jedem anderen Ort, an dem er vorhanden ist.

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

Ein Blick auf Beispiele im Nginx-Wiki kann ebenfalls hilfreich sein. http://wiki.nginx.org/Configuration


10

Zusätzlich zu den vorherigen Antworten können Sie auch die Namen der mit Regex erfassten Gruppen festlegen, damit sie später leichter referenziert werden können.

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

sehen NGINX: Überprüfen Sie, ob $ remote_user dem ersten Teil des Speicherorts entspricht für ein Anwendungsbeispiel.


Dies ist anscheinend notwendig, wenn es auch eine andere gibt verschachtelt Speicherort mit einer anderen Regex- und Regex-Erfassungsgruppe. Weil in diesem anderen Ort, $1 $2 $3 etc verweist auf Werte aus dem verschachtelten regulären Ausdruck und überschreibt den $1 $2 ... in der äußeren Regex. Ein alias /$1 in dem äußere Regex, wird das verwenden $1 von dem innere Regex, was wahrscheinlich dazu führt, dass die Datei nicht gefunden wird.
KajMagnus

Ich denke du kannst einfach schreiben (?<width>\d+) anstatt (?<width>(\d+)), oder gibt es einen anderen grund dafür - vielleicht auch zu bekommen $1 ebenso gut wie $width ?
Cameron Kerr

2

Sie können dies versuchen:

location ~ ^/photos/resize/.+ {
    rewrite ^/photos/resize/(\d+)/(\d+) /my_resize_script.php?w=$1&h=$2 last;
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.