Si je ne me trompe pas,location = / {}
signifie "uniquement le dossier /, ni les fichiers qu'il contient, ni les sous-dossiers"location ~ / {}
signifie "le dossier /, tous les fichiers qu'il contient, tous les sous-dossiers et leurs sous-fichiers"
Mais ce que cela signifie:location ^~ / {}
?
J'ai trouvé cette configuration sur le Web, mais je n'ai pas pu trouver de réponse à Google.
Je l’ai trouvé dans un tutoriel alors que j’essayais de protéger avec htpasswd un dossier et tout ce qu’il contient. Cependant location ~ /
a fait le travail, même si location ^~ /
protégeait tout aussi bien, il ne laissait pas les pages php fonctionner correctement.
Citation de documentation nginx :
Si l'emplacement du préfixe correspondant le plus long comporte le modificateur "^ ~", les expressions régulières ne sont pas vérifiées.
Ainsi, si l'emplacement correspond à/emplacement, les emplacements utilisant regex ne sont pas évalués. Cela provoque l'effet que vous avez décrit, c'est-à-dire que les scripts PHP cessent de fonctionner, car les scripts PHP sont généralement définis à l'aide d'un bloc d'emplacement regex.