Извлечение статических файлов с ошибкой 404 в nginx
Теперь я развертываю приложение 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.
Я уверен, что корневой путь статического файла правильный.
Может ли кто-нибудь помочь?
Ответы
Ответ 1
Вы должны использовать alias
вместо root
. root
добавляет части конечного URL-адреса в ваш локальный путь (например, http://test.ndd/trailing/part, он добавит/завершает/частично на ваш локальный путь). Вместо этого alias
выполняет именно то, что вы хотите: когда запрашивается http://test.ndd/static/,/static сопоставляется с вашим псевдонимом точно, без добавления статический снова.
Ответ 2
TL; DR - вы должны проверить права своих файлов
Наткнулся на этот вопрос, и я уже использовал alias
вместо root, поэтому, пока существующий ответ был до такой степени, следующее может быть полезным для других.
В моем случае решение этих же симптомов оказалось файлами в static/
, имеющими root
как владельца.
Простой chown www-data:www-data .
решил проблему, и не более 404
.