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

use*_*311 5 python django file nginx server

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

scp -r * root@[my ip address] /usr/share/nginx/html
Run Code Online (Sandbox Code Playgroud)

我的媒体文件夹中的文件上传到那里。现在文件不会自动放在那里,而是被发送到项目的媒体文件夹。不应该自动上传到Nginx服务器吗? 在此处输入图片说明 在此处输入图片说明在此处输入图片说明

Jos*_*ven 6

默认情况下,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;
        ...
    }
Run Code Online (Sandbox Code Playgroud)

如果您还配置了 HTTPS,请务必在client_max_body_size那里添加:

    ######################
    # HTTPS server
    ######################
    server {
        ...
        listen       443 default_server ssl;
        server_name  xxxx.com;
        client_max_body_size 20M;
        ...
    }
Run Code Online (Sandbox Code Playgroud)

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

[服务器]$ sudo service nginx reload


更多信息client_max_body_sizehttp : //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(请求实体太大)错误。请注意,浏览器无法正确显示此错误。将 size 设置为 0 将禁用对客户端请求正文大小的检查。