Nginx: Pourquoi la directive index ne peut pas fonctionner, 403 interdit?

Le nginx.conf est comme suit:

 user www-data; worker_processes 1; error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; events { worker_connections 1024; } http { server { listen 8080; server_name example.com; root /tmp/test/example; location = / { index index.html; } location / { root /tmp/test/mydomain; } } } 

Le errors.log est:
2016/03/22 23:07:56 [erreur] 17763 # 0: * 1 index de répertoire de “/ tmp / test / example /” est interdit, client: 127.0.0.1, serveur: example.com, demande: “GET / HTTP / 1.1 “, hôte:” example.com:8080 ”

Mais quand je commente la ligne root /tmp/test/example , ça marche bien. Je veux donc savoir comment fonctionne la redirection d’ index ?

Il me semble que vous n’avez pas de fichier index.html dans le /tmp/test/example .

Votre location = / teste la présence du fichier ( index.html ) et, s’il n’existe pas, génère une réponse 403.

Une fois l’URI réécrit dans /index.html il est réellement traité par votre location / bloc.

Je pense que la raison pour laquelle cela fonctionne lorsque vous supprimez la première directive root est que la root par défaut (ou globale) prend la place du fichier index.html “Bienvenue dans nginx”. Donc, il passe le test d’existence, puis sert votre fichier.

Je devrais append que ce qui précède est essentiellement un jeu de conjectures basé sur vos observations et mes expériences.