无法使用Django+nginx上载媒体文件

2024-09-28 16:20:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是基于andercp git-https://github.com/andrecp/django-tutorial-docker-nginx-postgres的django+nginx

这是nginx.conf公司文件:

worker_processes 1;

events {

    worker_connections 1024;

}

http {

    include /etc/nginx/mime.types;

    gzip on;
    gzip_proxied any;
    gzip_types text/plain text/xml text/css application/x-javascript;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";


    server {
        listen 80;
        server_name mysite.com;

        client_max_body_size 20M;
        charset     utf-8;

        access_log /dev/stdout;
        error_log /dev/stdout info;

        location /static {
            alias /usr/src/app/static;
        }

        location /static/myapp/js/ {
          default_type text/javascript;
          alias /usr/src/app/static/myapp/js/;
        }

        location /static/myapp/css/ {
          default_type text/css;
          alias /usr/src/app/static/myapp/css/;
        }

        location /media {
            alias /usr/src/app/media;
        }

        location / {
            proxy_pass http://django:8000;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;
        }
    }
}

这是我的模型:

^{pr2}$

我有一个简单的表格在我的网站上传图像输入。 当我在DEBUG=TRUE时,文件按预期上传,但我认为django处理它们而不是Nginx(因为它们被放在django文件夹中)。 当DEBUG=False时,什么都没有发生-我发送表单,文本数据被正确存储,但是图像没有被保存。在

我做错什么了?在

谢谢!在

更新:

server {
        listen 80;
        server_name yourserver.com;

        client_max_body_size 50M;
        charset     utf-8;

        location /static {
            alias /www/static;
        }

        location /media {
            alias /www/media;
        }

        location / {
            proxy_pass http://django:8000;
            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;

        }
    }

Tags: djangotextnamesrcserverusrnginxstatic
1条回答
网友
1楼 · 发布于 2024-09-28 16:20:14

您应该确保运行应用程序服务器的用户可以写入您的媒体根目录。在

在您的例子中,应用服务器应该是Gunicorn。假设运行Gunicorn的用户是www data,那么应该确保执行此命令以让应用程序服务器写入到MEDIA斨ROOT目录。在

sudo chown www-data.www-data /www/media

在这里您可以找到更多关于使用NGINX部署Django的信息:https://www.guguweb.com/2019/11/13/django-nginx-deploy-your-django-project-on-a-production-server/

相关问题 更多 >