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

5
每当我上传小文件,例如图片,数据都能成功保存。但是,当我上传音频文件时,出现了错误:413 Request Entity Too Large。这些文件大小约为8MB。令人困惑的是,在开发过程中轻松上传这些文件,但现在网站已经上线之后,无法正常工作。我读到可以更改上传大小的限制,但似乎无法弄清楚。另一个我看到的建议是将文件上传到服务器,并使用Nginx。我认为我已经配置好了;我输入了命令。
scp -r * root@[my ip address] /usr/share/nginx/html

我的媒体文件夹里的文件被上传到了那里。现在,这些文件不会自动放到那里,而是发送到项目的媒体文件夹。难道它不应该自动上传到Nginx服务器吗? 在这里输入图片描述 在这里输入图片描述在这里输入图片描述

可能是如何编辑nginx.conf以增加文件大小上传的重复问题。 - iklinac
1个回答

7

默认情况下,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;
        ...
    }

重新加载你的服务器,这样就可以了!

[server]$ 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 size;

默认值:client_max_body_size 1m;

上下文:http、server、location

设置客户端请求体的最大允许大小,指定在“Content-Length”请求头字段中。如果请求中的大小超过配置的值,则返回 413(请求实体过大)错误给客户端。请注意,浏览器无法正确显示此错误。将大小设置为0会禁用对客户端请求主体大小的检查。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接