2009-09-24 15 views
20

Ich benutze Django auf Ubuntu Server 9.04.Nginx dient nicht als statische

Django funktioniert gut, aber nginx nicht zurück statische Dateien - immer 404.

Hier ist die 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 Version 0.6.35 ist.

Alle Verzeichnisse existieren und 777 (Debug Paranoia) gemacht. Der auskommentierte Block hilft nicht, wenn ich ihn auskommentiere.

+1

auf serverfault.com – ChristopheD

+0

srry gehört, verstehe ich nicht, was meinen Sie – DataGreed

Antwort

56

Wie ist Ihr Verzeichnis eingerichtet? Haben Sie einen Ordner static in /home/user/www/oil/oil_database/static_files? In diesem Fall sollte die Richtlinie wie folgt aussehen (man beachte den Schrägstrich in /static/):

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

Wenn Sie den Pfad /home/user/www/oil/oil_database/static_files an die URL /static/ zuordnen möchten, müssen Sie entweder

  • benennen Sie den Ordner static_files-static und verwenden Sie diese Anweisung:

    location /static/ { 
        autoindex on; 
        root /home/user/www/oil/oil_database/; 
    } 
    
  • Verwendung eines Alias:

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

finden Sie in der Dokumentation zu den root und alias Richtlinien.

+1

+1 schlagen mich zu ihm. :-) –

+0

nein, es gibt kein "statisches" dir. Danke, ich werde den Alias ​​ausprobieren. – DataGreed

+1

Alias ​​funktioniert! Toll, vielen Dank :) – DataGreed

1

Ich habe eine ähnliche Konfiguration für meine Django-Sites, aber ich denke, dass Sie alias anstelle von root für Ihre Medien verwenden möchten. Zum Beispiel:

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