La balise location dans nginx

Priorité

Dans l’ordre de priorité…​

  • exactlty =: correspondance exacte

location  = / {
  # Uniquement la racine du serveur
  ...
}
  • prefix prefix ^~

location ^~ /msg {
  # Application msg

}
  • regular expression case sensitive ~

location ~ ^/msg {
  # Application msg

}
  • regular expression case insensitive ~*

location ~ ^/msg {
  # Application msg, fonctionne aussi avec Msg, MSG,...

}
  • prefix: correspondance du préfixe, priorité au plus long préfixe

location  / {
  # Configuration par défaut
  ...
}
location  /msg {
  # Application msg
  ...
}

Localisation nommée

La technique de named location permet à d’autres directives de faire des renvois.

location @msg {
    proxy_pass http://tomcat:8080;
}

On peut l’utiliser depuis une error_page ou try_files.

location /msg {
  try_files $uri @msg;
}

Dans cet exemple, on cherche à résoudre les requêtes localement et on renvoie sur la localisation nommée en cas d’échec. On devrait arriver au même résultat par la gestion d’erreur.

On peut aussi utiliser try_files pour faire un renvoi systématique. Sous cette forme, la localisation nommée sert surtout à faire de la réutilisation.

location /msg {
  try_files /dev/null @msg;
}

Localisations imbriquées

On peut imbriquer les localisations entre elles, sauf pour les correspondances exactes et les localisations nommées. Les chemins de correspondance sont toujours absolues.