2011-12-03 73 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