2009-09-24 33 views
20

Estoy ejecutando Django en Ubuntu Server 9.04.Nginx no sirve estático

Django funciona bien, pero nginx no devuelve archivos estáticos - 404. Siempre

Aquí está el 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; 
} 

versión Nginx es 0.6.35.

Todos los directorios existen e hicieron 777 (paranoia de depuración). El bloque comentado no ayuda cuando lo descomente.

+1

pertenece en serverfault.com – ChristopheD

+0

srry, no entiendo lo que quieres decir – DataGreed

Respuesta

56

¿Cómo se configura su directorio? ¿Tiene una carpeta static en /home/user/www/oil/oil_database/static_files? En ese caso, la directiva debe tener este aspecto (nótese la barra final en /static/):

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

Si desea asignar la ruta /home/user/www/oil/oil_database/static_files a la URL /static/, usted tiene que o bien

  • cambiar el nombre de la carpeta static_files-static y utilizar esta directiva:

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

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

Consulte la documentación sobre los root y alias directivas.

+1

1 se me adelantó. :-) –

+0

no, no hay un directorio "estático". Gracias, probaré el alias. – DataGreed

+1

alias trabajado! Genial, muchas gracias :) – DataGreed

1

Tengo una configuración similar para mis sitios Django, pero creo que desea utilizar alias en lugar de root para su medio. Por ejemplo:

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