413 Request Entity Too Large 使用 Django Admin 和 Nginx 配置上传文件

Posted

技术标签:

【中文标题】413 Request Entity Too Large 使用 Django Admin 和 Nginx 配置上传文件【英文标题】:413 Request Entity Too Large uploading files with Django Admin and Nginx Configuration 【发布时间】:2018-11-16 07:13:27 【问题描述】:

每当我上传一个小文件,比如一张图片,数据都会成功保存。但是,当我上传音频文件时,我收到此错误:413 Request Entity Too Large。文件大小约为 8MB。令人困惑的部分是在开发过程中很容易上传这些文件,但现在网站已经上线,它不起作用。我读到您可以更改上传大小的限制,但似乎无法弄清楚。我读到的另一件事是,您应该将文件上传到服务器,并且可以使用 nginx。我想我配置了它;我输入了命令

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

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

【问题讨论】:

How to edit nginx.conf to increase file size upload的可能重复 【参考方案1】:

默认情况下,nginx 配置为允许客户端最大主体大小为 1MB。您上传的文件 (~8MB) 大于 1MB,这就是返回 413 (Request Entity Too Large) 错误的原因。

要解决此问题,只需编辑 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、服务器、位置

设置客户端请求正文的最大允许大小,在 “Content-Length”请求头字段。如果请求中的大小 超过配置值,出现 413 (Request Entity Too Large) 错误 被退回给客户。请注意,浏览器不能 正确显示此错误。将大小设置为 0 禁用检查 客户端请求正文大小。

【讨论】:

以上是关于413 Request Entity Too Large 使用 Django Admin 和 Nginx 配置上传文件的主要内容,如果未能解决你的问题,请参考以下文章

.NetCore上传大文件 413 Request Entity Too Large 错误处理

Nginx出现413 Request Entity Too Large错误解决方法

Nginx 413 Request Entity Too Large

svn 413 Request Entity Too Large 错误

Nginx出现413 Request Entity Too Large错误解决方法

nginx-413-Request Entity Too Large