2011-12-03 12 views
12

Sono nuovo a Nginx, ho vincolato con successo il mio progetto django a Nginx. Tuttavia non posso servire i miei file statici e credo di aver impostato erroneamente la posizione della mia cartella multimediale. Ecco il mio albero di file:Come servire i file multimediali django via nginx?

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

E il mio nginx.conf va come:

 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; 
     } 
} 

Quando ho aperto la mia pagina di amministrazione, tutte le pagine CSS danno errore 404. Puoi dirmi che come posso impostare correttamente il mio percorso multimediale?

risposta

31

Ecco un esempio di come ho il mio setup server 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; 
    } 
} 

io servo Django con Gunicorn sulla porta localhost 8000. (questo è ciò che il proxy_pass è per)

Il wiki Nginx example configuration può aiutare anche tu. Notate nel loro file statico che servono specificano i tipi di file consentiti e usano 'root' invece di 'alias' ma sono simili.

Questa domanda ServerFault può aiutare.

+3

Per i nuovi utenti: non dimenticare di aggiungere 'include /etc/nginx/mime.types;' perché i file multimediali verranno ignorati dal browser se vengono offerti con il tipo di mimo predefinito 'text/plain' –

+0

Voglio i media server archiviati da URL diversi, ad esempio "media.example.com". come posso ottenerlo? – Kishan