2009-09-24 20 views
20

Używam Django na Ubuntu Server 9.04.Nginx nie działa statycznie

Django działa dobrze, ale nginx nie zwraca pliki statyczne - zawsze 404.

Oto 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 jest wersja 0.6.35.

Wszystkie katalogi istnieją i utworzono 777 (debugowanie paranoi). Zakomentowany blok nie pomoże, gdy odkomentuję go.

+1

należy na serverfault.com – ChristopheD

+0

srry, ja nie rozumiem, co masz na myśli – DataGreed

Odpowiedz

56

Jaka jest konfiguracja katalogu? Czy masz folder static w /home/user/www/oil/oil_database/static_files? W tym przypadku, dyrektywa powinna wyglądać tak (uwaga na końcowy ukośnik w /static/):

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

Jeśli chcesz mapować ścieżkę /home/user/www/oil/oil_database/static_files do adresu URL /static/, trzeba albo

  • zmienić nazwę folderu static_files do static i używać tej dyrektywy:

    location /static/ { 
        autoindex on; 
        root /home/user/www/oil/oil_database/; 
    } 
    
  • korzystania alias:

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

Zobacz dokumentację na temat dyrektyw root i alias.

+1

+1 mnie uprzedził. :-) –

+0

nie, nie ma "statycznego" reż. Dziękuję, wypróbuję alias. – DataGreed

+1

alias działał! Świetnie, dziękuję bardzo :) – DataGreed

1

Mam podobną konfigurację dla moich witryn Django, ale myślę, że chcesz użyć alias zamiast root dla swoich multimediów. Na przykład:

location /static { 
    alias /home/user/www/oil/oil_database/static_files; 
} 
Powiązane problemy