J'ai une application Django, python 2.7 avec gunicorn et nginx.
Nginx lance un 403 Forbidden Error
, si j'essaie de visualiser quoi que ce soit 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é d'afficher un fichier .css
dans /static/
et une erreur comme celle-ci est générée:
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.1.19</center>
</body>
</html>
Il semble que l'utilisateur nginx s'exécute car ( nginx ?) Ne dispose pas des privilèges nécessaires pour lire le fichier local /home/ubuntu/virtualenv/myapp/myapp/homelaunch/static/img/templated/home/img.png
. Vous voulez probablement vérifier les autorisations de fichiers ainsi que les autorisations sur les répertoires de la hiérarchie.
MacOs El Capitan : En haut de nginx.conf
écrire user username group_name
Mon nom d'utilisateur est Kamil alors j'écris:
user Kamil staff;
(Le mot "personnel" est très important dans macOS). Cela fait l'affaire. Après cela, vous ne devez modifier aucune autorisation dans le dossier et les fichiers de votre projet.
Essayez de spécifier un utilisateur en haut de votre fichier nginx.conf, au-dessus de la section serveur.
user www-data;
La solution minimale qui a fonctionné pour moi est la suivante:
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 autorisations de lecture sur les fichiers statiques . Vous pouvez résoudre ce problème de deux manières:
nginx
. 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, votre_app_user a déjà les autorisations nécessaires sur le contenu statique.