web-dev-qa-db-ja.com

nginx経由でDjangoメディアファイルを提供する方法は?

私はNginxを初めて使用し、DjangoプロジェクトをNginxに正常にバインドしました。ただし、静的ファイルを提供できず、メディアフォルダーの場所を間違って設定したと思います。これが私のファイルツリー:

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エラーが発生します。メディアパスを正しく設定するにはどうすればよいですか?

26
iva123

これは、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;
    }
}

私はDjangoローカルホストポート8000​​でGunicornを使用しています。(proxy_passの目的はそれです)

Nginx wiki 設定例 も役立つかもしれません。静的ファイルサービングで、許可されたファイルタイプを指定し、「エイリアス」の代わりに「ルート」を使用していることに注意してください。ただし、これらは類似しています。

この ServerFault の質問が役立つかもしれません。

48
j_syk

次のコードは私のために働きます:

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

前の答えに従って、さまざまな部分を太字にします。

0
seyedrezafar