Nginx: 413实体过大 - 文件未到达应用程序

7

我正在使用 Nginxuwsgi 来运行 wsgi 应用。当我尝试上传图片时,有时应用程序无法获取到图片,而出现错误 413 entity too large

通过添加 client_max_body_size 4M;,我解决了这个问题,我的 Nginx 配置大致如下:

//Add sample Nginx Server
//Block here

错误提示停止出现了,但是文件仍然无法到达应用程序。我不明白它为什么在某些电脑上可以工作,而在另一些电脑上不能工作。

我认为你所做的是正确的。但是也请检查你的目录权限和Nginx日志以获取失败信息。 - lalit
错误日志中绝对没有任何错误,我想知道为什么……他们有权限,就像我说的,它可以从一些客户端工作,但从一些客户端无法工作……我已经尝试了几乎所有的浏览器,结果是随机的,不一致的。 - rakesh
请问您能否在问题中添加您正在使用的示例Nginx配置(主要是服务器块)? - lalit
服务器块是 server { 监听 127.0.0.1:22989; 客户端最大请求体大小为4M; 客户端请求体缓存大小为128k; - rakesh
2个回答

11
如果您在上传时遇到"413 Request Entity Too Large"错误,您需要增加nginx.conf或任何其他配置文件中的大小限制。在服务器部分中添加client_max_body_size xxM,其中xx是您想允许的大小(以兆字节为单位)。
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        client_max_body_size 20M;
        listen       80;
        server_name  localhost;

        # Main location
        location / {
            proxy_pass         http://127.0.0.1:8000/;
        }
    }
}

1

这意味着最大文件大小大于上传大小。请参见client_max_body_size

因此,建议使用动态值而不是固定值。

server {
     [...]
     client_max_body_size 0;
     [...]
}

值为0将禁用最大上传检查,但我建议您放置一个固定的值,如3M10M等。


1
如何禁用最大上传检查?请添加以下代码:plus 1。 - Kishor Pawar
此参数可以添加到 httpserverlocation 上下文中。 - Kishor Pawar

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