Я пытаюсь заставить nginx работать вместе с пушкой. У меня есть каталог /project/static/
, где есть статические файлы. Эти файлы собраны в каталог /project/livestatic/
, используя конфигурацию settings.py
показанную:Невозможно получить nginx для обслуживания собранных статических файлов
STATIC_ROOT = '/project/livestatic'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
'/project/static',
)
Я использую следующий Nginx конфигурации:
worker_processes 1;
user nobody nogroup;
pid /tmp/nginx.pid;
error_log /tmp/nginx.error.log;
events {
worker_connections 1024;
accept_mutex off;
}
http {
include mime.types;
default_type application/octet-stream;
access_log /tmp/nginx.access.log combined;
sendfile on;
upstream app_server {
server 127.0.0.1 fail_timeout=0;
}
server {
listen 80 default;
client_max_body_size 4G;
server_name domain.org;
keepalive_timeout 5;
# path for static files
location /static/ {
autoindex on;
root /var/www/startupsearch_live/livestatic/;
}
location/{
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:8888;
}
}
}
Под сервер разработки (не обращая внимания Nginx), эта конфигурация работает отлично и я могу обслуживать статические файлы, связываясь с ними в формате /static/file.extension
. Однако в момент, когда nginx/gunicorn вступает в игру, это не работает, и попытка получить доступ к domain.org/static/
дает страницу django 404, означающую, что nginx прямо не обслуживает файлы вообще. Как я поступил неправильно?
Я сделал некоторое исследование, прежде чем спрашивать; по какой-то причине это не работает. Я все еще получаю Django 404 даже после перезапуска оружия и перезагрузки nginx , поэтому кажется, что параметр 'location /' как-то переопределяет 'location/static /', но я не уверен. –
Обновление: оказывается, системная перезагрузка исправлена ... Я помечаю ваш ответ как правильный, так как я предполагаю, что столкнулся бы с этой проблемой позже в любом случае. –