2011-12-03 71 views
12

我是新的Nginx時,我已經成功綁定我的Django項目Nginx的。但是我無法提供我的靜態文件,我想我錯誤地設置了我的媒體文件夾的位置。這裏是我的文件樹:如何通過nginx提供django媒體文件?

root_directory 
    my_django_project 
     ... 
     manage.py 
     app1 
     app2 
     media 
      admin 
      css 
      js 
      ... 

我的nginx.conf是這樣:

 server { 
       listen 192.168.1.9:80; 
       server_name localhost; 
       # site_media - folder in uri for static files                         

      location /media/ { 
      root /home/nazmi/workspace/portal/media/;                      
       } 

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) { 
    access_log off; # po co mi logi obrazków :)                            
    expires  30d; 
} 
       location/{ 
         # host and port to fastcgi server                          
         fastcgi_pass 127.0.0.1:8080; 
      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 main; 
       error_log  /var/log/nginx/localhost.error_log; 
     } 
} 

當我打開我的管理頁面,所有的CSS網頁給出了404錯誤。你能告訴我如何正確設置我的媒體路徑?

回答

31

這裏是我怎麼有我的nginx服務器的設置

server { 
    server_name example.com www.example.com; 
    location /static { 
     autoindex on; 
     alias /home/myusername/myproject/static/; 
    } 
    location /media { 
     autoindex on; 
     alias /home/myusername/myproject/media/; 
    } 
    location/{ 
     proxy_pass http://127.0.0.1:8000; 
    } 
} 

我服務與Gunicorn Django的本地主機端口8000上的例子(這是proxy_pass是什麼)

nginx的維基example configuration可以幫助你也是。在他們的靜態文件的通知服務,他們允許指定的文件類型和使用的,而不是「別名」根',但它們是相似的。

ServerFault問題可能會有幫助。

+3

新用戶:只要不忘記加上'包括/etc/nginx/mime.types;'因爲你的媒體文件會被瀏覽器忽略,如果他們都配有文字'/ plain'的默認MIME類型 –

+0

我想通過不同的網址,比如「media.example.com」提起服務器的媒體。我怎麼能做到這一點? – Kishan