2012-08-20 2 views
1

Я пытаюсь заставить 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 прямо не обслуживает файлы вообще. Как я поступил неправильно?

ответ

7

Этот вопрос спрашивает довольно много здесь ...

location /static/ { 
    alias /var/www/startupsearch_live/livestatic/; 
} 

Используя root так, как вы имели было бы сделать запрос на /static/foo.jpg решимости /var/www/startupsearch_live/livestatic/static/foo.jpg

alias не добавляет местоположения к нему. Он один-к-одному отображает его как есть.

+0

Я сделал некоторое исследование, прежде чем спрашивать; по какой-то причине это не работает. Я все еще получаю Django 404 даже после перезапуска оружия и перезагрузки nginx , поэтому кажется, что параметр 'location /' как-то переопределяет 'location/static /', но я не уверен. –

+0

Обновление: оказывается, системная перезагрузка исправлена ​​... Я помечаю ваш ответ как правильный, так как я предполагаю, что столкнулся бы с этой проблемой позже в любом случае. –

 Смежные вопросы

  • Нет связанных вопросов^_^