ti-enxame.com

Como servir Django arquivos de mídia via nginx?

Sou novo no Nginx, vinculei com êxito o meu projeto Django ao Nginx. No entanto, não posso servir meus arquivos estáticos e acho que defino incorretamente a localização da minha pasta de mídia. árvore de arquivos:

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

E meu nginx.conf é como:

        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 abro minha página de administrador, todas as páginas css dão erro 404. Você pode me dizer que como posso definir meu caminho de mídia corretamente?

26
iva123

Aqui está um exemplo de como eu tenho meus servidores nginx configurados

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

Eu sirvo Django com Gunicorn na porta localhost 8000. (é para isso que serve o proxy_pass))

O wiki do Nginx configuração de exemplo também pode ajudá-lo. Observe no arquivo estático que eles especificam tipos de arquivos permitidos e usam 'root' em vez de 'alias', mas são semelhantes.

Esta questão ServerFault pode ajudar.

48
j_syk

O código a seguir funciona para mim:

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

Arrojo as diferentes partes de acordo com a resposta anterior.

0
seyedrezafar