Nginx-Standortpriorität

186

In welcher Reihenfolge feuern Standortrichtlinien?

user650505
quelle

Antworten:

351

Aus den Dokumenten des HTTP-Kernmoduls :

  1. Anweisungen mit dem Präfix "=", die genau mit der Abfrage übereinstimmen. Wenn gefunden, wird die Suche beendet.
  2. Alle übrigen Anweisungen mit herkömmlichen Zeichenfolgen. Wenn für diese Übereinstimmung das Präfix "^ ~" verwendet wurde, wird die Suche beendet.
  3. Reguläre Ausdrücke in der Reihenfolge, in der sie in der Konfigurationsdatei definiert sind.
  4. Wenn # 3 eine Übereinstimmung ergab, wird dieses Ergebnis verwendet. Andernfalls wird die Übereinstimmung von # 2 verwendet.

Beispiel aus der Dokumentation:

location  = / {
  # matches the query / only.
  [ configuration A ] 
}
location  / {
  # matches any query, since all queries begin with /, but regular
  # expressions and any longer conventional blocks will be
  # matched first.
  [ configuration B ] 
}
location /documents/ {
  # matches any query beginning with /documents/ and continues searching,
  # so regular expressions will be checked. This will be matched only if
  # regular expressions don't find a match.
  [ configuration C ] 
}
location ^~ /images/ {
  # matches any query beginning with /images/ and halts searching,
  # so regular expressions will not be checked.
  [ configuration D ] 
}
location ~* \.(gif|jpg|jpeg)$ {
  # matches any request ending in gif, jpg, or jpeg. However, all
  # requests to the /images/ directory will be handled by
  # Configuration D.   
  [ configuration E ] 
}

Wenn es immer noch verwirrend ist, finden Sie hier eine längere Erklärung .

Martin Redmond
quelle
9
damit kann dir helfen :) github.com/detailyang/nginx-location-match-visible
user2228392
4
Beachten Sie, dass sowohl /als auch /documents/Regeln mit der Anforderung übereinstimmen. Die /documents/index.htmlletztere Regel hat jedoch Vorrang, da sie die längste Regel ist.
Arrakis_sun
68

Es wird in dieser Reihenfolge ausgelöst.

  1. = (genau)

    location = /path

  2. ^~ (Vorwärtsspiel)

    location ^~ /path

  3. ~ (Groß- und Kleinschreibung beachten)

    location ~ /path/

  4. ~* (Groß- und Kleinschreibung wird nicht berücksichtigt)

    location ~* .(jpg|png|bmp)

  5. /

    location /path

Don Dilanga
quelle
3
^ ~ (Vorwärtsspiel) sehr wichtig
iwind