Watch a demoFree trial
Blog

Blocs d'emplacements imbriqués dans la configuration de NGINX

NGINXconfiguration
04 août 2025
Michael Sharp
Michael Sharp
Ingénieur principal en exploitation de l'informatique en nuage
Partager
Cet article est également disponible en Allemande et Anglais.

Si vous êtes comme moi, vous vous êtes souvent retrouvé à consulter la documentation de NGINX (vous savez, juste pour le plaisir) et à trouver ce qui suit :

les blocs location peuvent être imbriqués, avec quelques exceptions mentionnées ci-dessous

Et vous vous êtes dit : "Wow, c'est tellement peu spécifique. Qu’est‑ce que ça signifie vraiment d’imbriquer un bloc location ? Pourquoi est‑ce que je voudrais faire ça ? "

Eh bien, j'ai longuement étudié la configuration de nginx et je peux vous donner quelques indications sur la base de mes découvertes. Vous pouvez toujours consulter la documentation de NGINX si vous avez besoin d'un rafraîchissement sur le fonctionnement des blocs location de la configuration de NGINX.

Locations

Quatre types de blocs location peuvent être définis dans la configuration NGINX, je vais les appeler ainsi : 

  • Emplacements à correspondance exacte (=-type)
  • Emplacements de configuration simples
  • Emplacements de configuration avec préfixe fort
  • Emplacements de configuration Regex

Les trois premiers sont similaires en ce sens qu'ils sont tous des emplacements de configuration NGINX de type préfixe. Ils doivent tous correspondre au début de l'Uniform Resource Identifier (URI) demandé. Ainsi,  location/foo ne correspondra jamais qu'à une requête pour http://some.site/foo/bar/, il ne peut pas correspondre à http://some.site/bar/foo/, même si /foo apparaît quelque part dans l’URI. Les emplacements RegEx sont traités différemment, comme nous le verrons plus loin dans cet article, alors restez à l'écoute.

Préfixer les emplacements de configuration de NGINX

Lorsque NGINX traite une requête, il cherche quel bloc location de type préfixe s’applique — un seul bloc peut s’appliquer. Pour ce faire, il parcourt le fichier de configuration NGINX de haut en bas - la construction du fichier est un autre sujet. Pour l'instant, il suffit de penser à un fichier de configuration NGINX à la recherche d'emplacements de type préfixe. Chaque fois qu'il trouve un emplacement qui correspond à la requête en cours, il vérifie si cet emplacement est plus long que le dernier qu'il a vu. Si c'est le cas, NGINX s'en souvient. Si l'emplacement correspond exactement et est de =-type , alors il termine sa recherche et utilise immédiatement ce bloc d'emplacement sans même consulter les emplacements de type RegEx. Notamment, les emplacements de =-type ne peuvent pas avoir d'emplacements imbriqués dans eux, et NGINX traitera cela comme une erreur si vous essayez.

S'il y a des locations de type préfixe imbriqués dans le bloc nouvellement rappelé, il les prend en compte à ce moment-là, comme s'ils étaient définis au niveau supérieur.

Emplacements de configuration RegEx de NGINX

Si NGINX arrive à la fin du fichier sans avoir trouvé d’emplacement =-type, il garde en mémoire le meilleur emplacement de type préfixe correspondant à la requête. Il testera ensuite tous les emplacements de type RegEx, en commençant par les emplacements définis à l'intérieur de l' emplacement de type préfixe qui correspond. La première fois que l'un de ces emplacements correspond, il arrête de chercher et utilise simplement le bloc d'emplacements de la configuration NGINX. Lorsqu'il arrive à la fin de l'emplacement de type préfixe sans correspondance, il continue à chercher au début du fichier de configuration NGINX.

Remarque : il y a une exception à cette règle, NGINX cherchera à l'intérieur du bloc location correspondant des blocs location RegEx plus profondément imbriqués qui correspondent.

Vous ne pouvez pas avoir un bloc location de type préfixe imbriqué dans un bloc location de type RegEx, et NGINX le signalera comme une erreur si vous essayez.

Enfin, il y a une dernière exception à ce qui se passe après que les emplacements de configuration NGINX aient fini d'être recherchés. Si le meilleur bloc location de type préfixe a le modificateur de préfixe fort(^~), alors il ne vérifiera aucun emplacement RegEx, à l'exception des emplacements RegEx imbriqués.

Partagez vos idées sur les emplacements de configuration de NGINX avec Upsun

J’espère que ces explications aideront mes collègues explorateurs de configurations NGINX ! Je me suis aventuré dans les arcanes de la config nginx récemment et j’ai trouvé difficile de dénicher une réponse complète, alors je partage ici mes découvertes. Vous êtes‑vous déjà lancé dans une enquête nginx ? Qu’avez‑vous trouvé ?

Partagez, discutez, débattez - faites-nous part de vos réflexions et de vos découvertes sur Discord.

Votre meilleur travail
est à l'horizon

Essai gratuit
Discord
© 2025 Platform.sh. All rights reserved.