Подтвердить что ты не робот

Nginx не обслуживает статические

Я запускаю Django на сервере Ubuntu 9.04.

Django работает хорошо, но nginx не возвращает статические файлы - всегда 404.

Здесь config:

server {
    listen 80;
    server_name localhost;

    #site_media - folder in uri for static files
    location /static  {
        root /home/user/www/oil/oil_database/static_files;
        autoindex on;
    }

    #location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov) {
    #   root /home/user/www/oil/oil_database/static_files;
    #   access_log off;
    #   expires 30d;
    #}

    location / {
        root html;
        index index.html index.htm;
        # host and port to fastcgi server
        #fastcgi_pass 127.0.0.1:8080;
        fastcgi_pass unix:/home/user/www/oil/oil_database/oil.sock;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        fastcgi_param REQUEST_METHOD $request_method;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_param CONTENT_TYPE $content_type;
        fastcgi_param CONTENT_LENGTH $content_length;
        fastcgi_pass_header Authorization;
        fastcgi_intercept_errors off;
    }

    access_log /var/log/nginx/localhost.access_log;
    error_log /var/log/nginx/localhost.error_log;
}

Версия Nginx - 0.6.35.

Все каталоги существуют и сделаны 777 (отладка паранойи). Заблокированный блок не помогает, когда я раскомментирую его.

4b9b3361

Ответ 1

Как устанавливается ваш каталог? У вас есть папка static в /home/user/www/oil/oil_database/static_files? В этом случае директива должна выглядеть так (обратите внимание на конечную косую черту в /static/):

location /static/  {
    autoindex    on;
    root /home/user/www/oil/oil_database/static_files;
}

Если вы хотите сопоставить путь /home/user/www/oil/oil_database/static_files к URL /static/, вам нужно либо

  • переименуйте папку static_files в static и используйте эту директиву:

    location /static/  {
        autoindex    on;
        root /home/user/www/oil/oil_database/;
    }
    
  • используйте псевдоним:

    location /static/  {
        autoindex    on;
        alias /home/user/www/oil/oil_database/static_files/;
    }
    

Смотрите документацию на root и alias.

Ответ 2

У меня есть аналогичная конфигурация для моих сайтов Django, но я думаю, что вы хотите использовать alias вместо root для своих медиа. Например:

location /static {
    alias /home/user/www/oil/oil_database/static_files;
}