Я размещаю свой Djangoproject на Nginx с uwsgi. статические файлы должны обслуживаться Nginx отдельно
server {
listen 80;
server_name blog.foo.de;
location /static {
root /home/user/blog/staticfiles;
access_log off;
expires 30d;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/tmp/blog.socket;
}
access_log /var/log/nginx/blog.access.log combined;
error_log /var/log/nginx/blog.error.log warn;
}
Мой STATIC_URL установлен на http://blog.foo.de/static/ Папка / home / user / blog / staticfiles содержит статическую папку, в которой собираются файлы. так что согласно другим сообщениям здесь все шолуд работает - но это не так. часть uwsgi работает нормально, но я получаю только 404 когда я пытаюсь получить доступ к статическим файлам.
Используйте этот код для местоположения статических файлов
location ^~ /static/ {
alias /home/user/blog/staticfiles;
}
Эта ссылка может помочь вам для получения более подробной информации - https://stackoverflow.com/questions/23226357/django-nginx-static-files-404
Это требует некоторой общей очистки:
server
блок имеет два location /
блоки, что запрещено; один из них будет проигнорирован. Используйте только один location
блок для любого данного местоположения.server
блок не имеет root
определено. Удостоверься что root
определяется только в server
блок, а не в location
блоки (если для местоположения не нужен другой корень).Также рекомендую не поворачивать off
то access_log
или используя expires
во время отладки, поскольку это может затруднить выявление причины проблемы.
Хотя, чтобы действительно это исправить, подумайте о том, чтобы полностью его переписать. Очень короткий пример:
server {
location @django {
include uwsgi_params;
uwsgi_pass unix:/tmp/blog.socket;
}
location / {
try_files $uri $uri/ @django;
}
}