Извлечение статических файлов с ошибкой 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.