413请求实体使用Django Admin和Nginx配置上传文件太大

时间:2018-06-06 14:38:26

标签: python django file nginx server

每当我上传一个小文件(如图像)时,数据都会成功保存。但是,当我上传音频文件时,我收到此错误:413请求实体太大。文件大小约为8MB。令人困惑的部分是在开发过程中轻松上传这些文件,但现在网站已经上线,但它不起作用。我读到您可以更改上传大小的限制,但似乎无法弄明白。我读到的另一件事是你应该将文件上传到服务器,你可以使用Nginx。我想我配置了它;我输入了命令

scp -r * root@[my ip address] /usr/share/nginx/html

我的媒体文件夹中的文件已上传到那里。现在,文件不会自动放在那里,而是发送到项目的媒体文件夹。它不应该自动上传到Nginx服务器吗? enter image description here enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

默认情况下,nginx配置为允许客户端最大主体大小为1MB。您正在上传的文件(〜8MB)大于1MB,这就是为什么返回413(请求实体太大)错误的原因。

要解决此问题,只需编辑 nginx.conf 并添加client_max_body_size配置,如下所示:

    ######################
    # HTTP server
    ######################
    server {
        ...
        listen       80;
        server_name  xxxx.com;
        client_max_body_size 20M;
        ...
    }

如果您还配置了HTTPS,请确保在其中也添加client_max_body_size

    ######################
    # HTTPS server
    ######################
    server {
        ...
        listen       443 default_server ssl;
        server_name  xxxx.com;
        client_max_body_size 20M;
        ...
    }

重新加载服务器,您应该会很好!

[服务器] $ sudo service nginx reload


有关client_max_body_size的更多信息,请访问:http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size

  

语法:client_max_body_size大小;

     

默认值:client_max_body_size 1m;

     

上下文:http,服务器,位置

     

设置客户端请求正文的最大允许大小,在   “内容长度”请求标头字段。如果在请求中的大小   超过配置的值,则出现413(请求实体太大)错误   返回给客户端。请注意,浏览器无法   正确显示此错误。将大小设置为0将禁用对   客户请求正文大小。