88 votes

Nginx sert un fichier statique et obtient 403 forbidden.

Je veux juste aider quelqu'un. Oui, vous voulez juste servir un fichier statique en utilisant nginx, et vous avez tout ce qu'il faut dans nginx.conf :

location /static {
       autoindex on;
       #root /root/downloads/boxes/;
       alias /root/downloads/boxes/;
      }

Mais, à la fin, vous avez échoué. Vous avez obtenu "403 forbidden" du navigateur...

---------------------------------------- La réponse ci-dessous : ----------------------------------------

La solution est très simple :


Méthode 1 : Exécuter nginx en tant qu'utilisateur propriétaire de '/Root/downloads/boxes/'.

Sur nginx.conf :

user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;

OUI, dans la première ligne " utilisateur noboy ; " il suffit de supprimer " # " et changer " personne " à votre propre nom d'utilisateur sous Linux/OS X, c'est-à-dire changer en " Racine " pour le test. Le redémarrage de nginx.

Attention Tu ferais mieux de ne pas courir. nginx comme Racine ! Ici juste pour tester, c'est dangereux pour le Hacker.

Pour plus de références, voir nginx (moteur X) - Quelle douleur dans le BUM ! [13 : Permission refusée]


Voie 2 : Changez le propriétaire de '/Root/downloads/boxes/' en 'www-data' ou 'nobody'.

Sur Terminal :

ps aux | grep nginx

Obtenez le nom d'utilisateur de nginx en cours d'exécution. Il doit être www-data ou "personne déterminée par la version de nginx. Ensuite, tapez dans le Terminal(utilisez www-data par exemple) :

chown -R www-data:www-data /root/downloads/boxes/

------------------------------ Une chose plus importante est : ------------------------------

Ces répertoires parents "/" , "/Root" , "/Root/downloads" doit donner à l'execute(x) la permission de www-data ou "personne . c'est-à-dire

ls -al /root
chmod o+x /root
chmod o+x /root/downloads

Pour plus de références, voir Résolution de l'erreur "403 Forbidden" (interdit) y Nginx 403 interdit pour tous les fichiers

0voto

DIAA SHALABY Points 426

Tu peux juste faire comme lui :

CentOS / Fedora

sudo usermod -a -G your_user_name nginx

chmod 710 /home/your_user_name 

Ubuntu / Debian

sudo usermod -a -G your_user_name www-data

sudo chown -R :www-data /path/to/your/static_folder

Et dans votre fichier nginx qui sert votre site, assurez-vous que votre emplacement pour static c'est comme ça :

location /static/ {
        root /path/to/your/static_folder;
    }

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