Priorité de localisation Nginx

204

Dans quel ordre les directives de localisation se déclenchent-elles?

user650505
la source

Réponses:

371

À partir de la documentation du module principal HTTP :

  1. Directives avec le préfixe "=" qui correspondent exactement à la requête. Si trouvé, la recherche s'arrête.
  2. Toutes les directives restantes avec des chaînes conventionnelles. Si cette correspondance utilise le préfixe «^ ~», la recherche s'arrête.
  3. Expressions régulières, dans l'ordre où elles sont définies dans le fichier de configuration.
  4. Si # 3 donne une correspondance, ce résultat est utilisé. Sinon, la correspondance de # 2 est utilisée.

Exemple de la documentation:

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 ] 
}

Si c'est encore déroutant, voici une explication plus longue .

Martin Redmond
la source
9
avec elle peut vous aider :) github.com/detailyang/nginx-location-match-visible
user2228392
4
Notez que les règles /et /documents/correspondent toutes deux à la demande /documents/index.html, mais la dernière règle a la priorité car c'est la règle la plus longue.
arrakis_sun
82

Il tire dans cet ordre.

  1. = (exactement)

    location = /path

  2. ^~ (match avant)

    location ^~ /path

  3. ~ (expression régulière sensible à la casse)

    location ~ /path/

  4. ~* (expression régulière insensible à la casse)

    location ~* .(jpg|png|bmp)

  5. /

    location /path

Don Dilanga
la source
4
^ ~ (match avant) très important
iwind