Je déploie maintenant une application Django avec nginx et gunicorn sur ubuntu 12.
Et je configure le fichier hôte virtuel nginx comme ci-dessous:
server {
listen 80;
server_name mydomain.com;
access_log /var/log/nginx/gunicorn.log;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /static/ {
root /var/www/Django/ecerp/erp/static/;
}
}
Je peux demander le Django bien, mais quand je demande un fichier statique, il répond avec un état 404.
Je suis sûr que le chemin racine du fichier statique est correct.
Quelqu'un peut-il aider?
Vous devez utiliser alias
au lieu de root
. root
ajoute les parties d'URL de fin à votre chemin local (par exemple http: //test.ndd/trailing/part , il ajoutera/trailing/part à votre chemin local). Au lieu de cela, alias
fait exactement ce que vous voulez: quand http: //test.ndd/static/ est demandé,/static est mappé à votre alias exactement, sans ajouter à nouveau statique .
TL; DR - vous devriez vérifier les permissions de vos fichiers
Je suis tombé sur cette question et j'utilisais déjà alias
au lieu de root, donc bien que la réponse existante soit à la hauteur, ce qui suit pourrait être utile à d'autres.
Dans mon cas, la solution aux mêmes symptômes s'est avérée être les fichiers dans static/
ayant root
comme propriétaire.
Un simple chown www-data:www-data .
a résolu le problème, et pas plus 404
.