2009-09-24 156 views
20

我在Ubuntu Server 9.04上運行Django。Nginx不提供靜態

Django的效果很好,但nginx的不返回靜態文件 - 總是404

這裏的配置:

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(調試偏執狂)。當我取消註釋時,註釋掉的塊不起作用。

+1

屬於對serverfault.com – ChristopheD 2009-09-24 22:13:03

+0

srry,我不明白你的意思 – DataGreed 2009-09-27 19:33:55

回答

56

你的目錄設置如何? /home/user/www/oil/oil_database/static_files中有文件夾static嗎?在這種情況下,該指令應該是這樣的(注意/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/; 
    } 
    

見關於rootalias指令的文檔。

+1

+1打我給它。 :-) – 2009-09-24 22:13:04

+0

不,沒有「靜態」目錄。謝謝,我會嘗試別名。 – DataGreed 2009-09-27 19:34:42

+1

別名工作!太好了,非常感謝:) – DataGreed 2009-09-27 19:40:20

1

我對我的Django網站有類似的配置,但是我認爲你想爲你的媒體使用alias而不是root。例如:

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