J’ai une application Django, Python 2.7 avec Gunicorn et Nginx.
Nginx lance une 403 Forbidden Error
si j’essaie d’afficher quelque chose dans mon dossier static
@:
/home/ubuntu/virtualenv/myapp/myapp/homelaunch/static
nginx config ( /etc/nginx/sites-enabled/myapp
) contient:
server { listen 80; server_name *.myapp.com; access_log /home/ubuntu/virtualenv/myapp/error/access.log; error_log /home/ubuntu/virtualenv/myapp/error/error.log warn; connection_pool_size 2048; fastcgi_buffer_size 4K; fastcgi_buffers 64 4k; root /home/ubuntu/virtualenv/myapp/myapp/homelaunch/; location /static/ { alias /home/ubuntu/virtualenv/myapp/myapp/homelaunch/static/; } location / { proxy_pass http://127.0.0.1:8001; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"'; } }
error.log contient:
2013/11/24 23:00:16 [error] 18243#0: *277 open() "/home/ubuntu/virtualenv/myapp/myapp/homelaunch/static/img/templated/home/img.png" failed (13: Permission denied), client: xx.xx.xxx.xxx, server: *.myapp.com, request: "GET /static/img/templated/home/img2.png HTTP/1.1", host: "myapp.com", referrer: "http://myapp.com/"
access.log contient
xx.xx.xx.xxx - - [24/Nov/2013:23:02:02 +0000] "GET /static/img/templated/base/animg.png HTTP/1.1" 403 141 "http://myapp.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:25.0) Gecko/20100101 Firefox/25.0" xx.xx.xx.xxx - - [24/Nov/2013:23:02:07 +0000] "-" 400 0 "-" "-"
J’ai juste essayé de visualiser un fichier .css
dans /static/
et cela génère une erreur comme celle-ci dans la source:
403 Forbidden 403 Forbidden
nginx/1.1.19
Il semble que l’utilisateur nginx s’exécute car ( nginx ?) /home/ubuntu/virtualenv/myapp/myapp/homelaunch/static/img/templated/home/img.png
les privilèges pour lire le fichier local /home/ubuntu/virtualenv/myapp/myapp/homelaunch/static/img/templated/home/img.png
. Vous voulez probablement vérifier les permissions de fichiers ainsi que les permissions sur les répertoires de la hiérarchie.
MacOs El Capitan : En haut de nginx.conf
écrivez user username group_name
Mon nom d’utilisateur est Kamil, donc j’écris:
user Kamil staff;
(le mot «staff» est très important dans macOS). Cela fait l’affaire. Après cela, vous n’avez pas besoin de modifier les permissions dans le dossier et les fichiers de votre projet.
Essayez de spécifier un utilisateur en haut de votre nginx.conf, au-dessus de la section serveur.
user www-data;
Le correctif minimum qui a fonctionné pour moi est:
sudo chmod -R 664 /home/ubuntu/virtualenv/myapp/myapp/homelaunch/static/ sudo chmod -R a+X /home/ubuntu/virtualenv/myapp/myapp/homelaunch/static/
(BTW, dans mon cas, le dossier statique s’appelle collected_static
)
Il semble que l’utilisateur du serveur Web ne dispose pas des permissions de lecture sur les fichiers statiques. Vous pouvez résoudre ce problème de deux manières:
nginx
par défaut. Pour ce faire, ajoutez ce qui suit dans nginx.conf
user your_app_user
Remplacez your_app_user
par le nom d’utilisateur unix approprié pour votre application.
Dans ce cas, your_app_user a déjà les permissions nécessaires sur le contenu statique.
Après des heures et des heures à la suite de tant d’articles, je suis tombé sur: http://nicholasorr.com/blog/2008/07/22/nginx-engine-x-what-a-pain-in-the-bum/
qui avait un commentaire pour chmoder tout le répertoire de l’application django, donc j’ai fait:
sudo chmod -R myapp
Cela a corrigé Incroyable!
Merci à ceux qui ont proposé des solutions pour résoudre ce problème.