Je ne parviens pas à comprendre les emplacements imbriqués dans nginx. J'ai deux emplacements avec des directives de configuration en commun, alors plutôt que de répéter les directives, je préférerais répéter l'URI en utilisant une expression régulière:
location ~ /a|/b {
location /a {
}
location /b {
}
}
Cependant, cela donne l'erreur
nginx: [emerg] location "/a" is outside location "/a|/b" in /etc/nginx/nginx.conf:36
Sans le ou |
cela semble bien, cependant.
location ~ /a {
location /a {
}
}
Qu'est-ce que je fais mal? Y a-t-il une meilleure façon de faire cela sans rien répéter? Puis-je regrouper des emplacements d'une autre manière?
Réponses:
Ancienne question, mais le problème vient du fait que l'emplacement parent est un emplacement regex alors que les emplacements imbriqués sont des emplacements de préfixe.
Vous ne pouvez définir des emplacements de préfixes imbriqués que lorsque l'emplacement parent est également un emplacement de préfixe:
Lorsqu'un emplacement parent est défini par une expression rationnelle, tous les emplacements imbriqués doivent également être définis par des expressions rationnelles:
Cependant, vous pouvez également définir des emplacements imbriqués de regex lorsque l'emplacement parent est un emplacement de préfixe:
la source
/b
générera une erreur?location /a { }
partout, l’ordre est-il important?