Djangoアプリをnginxとgunicornでubuntu 12にデプロイしています。
そして、私はnginx仮想ホストファイルを以下のように設定します:
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/;
}
}
Djangoもリクエストできますが、静的ファイルをリクエストすると、404ステータスで応答します。
静的ファイルのルートパスが正しいと確信しています。
誰か助けてもらえますか?
alias
の代わりにroot
を使用する必要があります。 root
は、末尾のURL部分をローカルパスに追加します(例: http://test.ndd/trailing/part 、これにより/ trailing/partがローカルパスに追加されます)。その代わりに、alias
はまさにあなたが望むことをします: http://test.ndd/static/ が要求されたとき、/ staticはstaticを再度追加することなく正確にエイリアスにマップされます。
TL; DR-ファイルの権限を確認する必要があります
この質問に出くわし、私はすでにrootの代わりにalias
を使用していたので、既存の回答はまあまあでしたが、以下は他の人に役立つかもしれません。
私の場合、同じ症状の解決策は、root
を所有者として持つstatic/
のファイルであることがわかりました。
単純なchown www-data:www-data .
で問題が解決し、もう404
で解決できません。