305 votes

Erreur Nginx 403 : l'index du répertoire [folder] est interdit

J'ai 3 noms de domaine et j'essaie d'héberger les 3 sites sur un seul serveur (un droplet Digital Ocean) en utilisant Nginx.

mysite1.name mysite2.name mysite3.name

Un seul d'entre eux fonctionne. Les deux autres aboutissent à des erreurs 403 (de la même manière).

Dans mon journal d'erreurs nginx, je vois : [error] 13108#0: *1 directory index of "/usr/share/nginx/mysite2.name/live/" is forbidden .

Ma configuration pour les sites activés est la suivante

server {
        server_name www.mysite2.name;
        return 301 $scheme://mysite2.name$request_uri;
}
server {
        server_name     mysite2.name;

        root /usr/share/nginx/mysite2.name/live/;
        index index.html index.htm index.php;

        location / {
                try_files $uri $uri/ /index.html index.php;
        }

        location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
}

Les trois sites ont des fichiers de configuration pratiquement identiques.

Les fichiers de chaque site se trouvent dans des dossiers tels que /usr/share/nginx/mysite1.name/someFolder, et /usr/share/nginx/mysite1.name/live est un lien symbolique vers ce dossier. (Idem pour mysite2 et mysite3).

J'ai examiné Nginx 403 interdit pour tous les fichiers mais cela n'a pas aidé.

Des idées sur ce qui pourrait être un problème ?

10voto

RAZ0229 Points 65

Voici comment j'ai réussi à résoudre ce problème sur ma machine Kali :

  • Localiser le répertoire :

    cd /etc/nginx/sites-enabled/

  • Modifiez le fichier de configuration "default" :

    sudo nano default

  • Ajouter les lignes suivantes dans le fichier location bloc :

    location /yourdirectory {
      autoindex on;
      autoindex_exact_size off;
    }
  • Notez que j'ai activé l'indexation automatique dans un répertoire spécifique /yourdirectory seulement. Sinon, il sera activé pour tous les dossiers de votre ordinateur, ce qui n'est pas souhaitable.

  • Redémarrez votre serveur et il devrait fonctionner :

    sudo service nginx restart

7voto

Tomahock Points 76

Il semble qu'il y ait un problème de permissions.

Essayez de définir toutes les permissions comme vous l'avez fait dans mysite1 pour les autres sites.

Par défaut, les permissions sur les fichiers doivent être de 644 et celles sur les répertoires de 755. Vérifiez également que l'utilisateur qui exécute nginx a le droit de lire ces fichiers et ces répertoires.

5voto

Mohammad AbuShady Points 7143

Modifier les try_files pour pointer vers le index.php dans le chemin "Laravel" que vous avez mentionné, il devrait être quelque chose comme ceci

location / {
    try_files $uri $uri/ /public/index.php$request_uri;
}

Et dans le projet "codeigniter", essayez comme ceci

location / {
    try_files $uri $uri/ /public_web/index.php$request_uri;
}

3voto

Rhys Points 946

Vous devez disposer du droit d'exécution sur votre répertoire de fichiers statiques. Ils doivent également être chown'ed par l'utilisateur et le groupe de nginx.

1voto

maz Points 1766

Si vous essayez simplement de lister le contenu d'un répertoire, utilisez autoindex on; comme :

server {
        listen   80;
        server_name  domain.com www.domain.com;
        access_log  /var/...........................;
        root   /path/to/root;
        location / {
                index  index.php index.html index.htm;
        }
        location /somedir {
               autoindex on;
        }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X