Nginx一直说客户端打算发送太大的身体。谷歌和RTM让我找到了client_max_body_size。我在Nginx .conf和vhost conf中设置了200m,重启了Nginx几次,但我仍然得到错误消息。

我是不是忽略了什么?后端是php-fpm (max_post_size和max_upload_file_size是相应设置的)。


当前回答

有同样的问题,client_max_body_size指令被忽略。

我的愚蠢错误是,我把一个文件放在了/etc/nginx/conf里面。D,不以.conf结尾。Nginx默认情况下不会加载这些。

其他回答

我正在设置一个开发服务器来使用我们过时的live服务器,我使用了完美的服务器- Ubuntu 14.04 (nginx, BIND, MySQL, PHP, Postfix, Dovecot和ISPConfig 3)

在经历了同样的问题后,我看到了这篇文章,但没有任何工作。我改变了每个推荐文件(nginx.conf, ispconfig. conf)中的值。Vhost, /sites-available/default,等等)

最后,在/etc/nginx/sites-available/apps中修改client_max_body_size。Vhost和重新启动nginx是什么把戏。希望它能帮助到其他人。

下面的配置对我有用。注意,我只设置client_max_body_size 50M;曾经,与别人所说的相反……

文件:/etc/nginx/conf.d/sites.conf

server {
    listen 80 default_server;
    server_name portal.myserver.com;
    return 301 https://$host$request_uri;
}

server {
    resolver 127.0.0.11 valid=30s;
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    ssl_certificate /secret/portal.myserver.com.crt;
    ssl_certificate_key /secret/portal.myserver.com.pem;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    server_name portal.myserver.com;
    client_max_body_size 50M;
    location /fileserver/ {
        set $upstream http://fileserver:6976;
        proxy_pass $upstream;
    }
}

我遇到了同样的问题,但我发现它与nginx无关。我使用nodejs作为后端服务器,使用nginx作为反向代理,413代码是由节点服务器触发的。节点使用koa解析正文。Koa限制url编码的长度。

formLimit: url编码体的限制。如果主体最终大于此限制,则返回413错误代码。默认为56kb。

将formLimit设置为更大可以解决这个问题。

如果您正在使用Kubernetes,请在Ingress中添加以下注释:

annotations:
  nginx.ingress.kubernetes.io/client-max-body-size: "5m"
  nginx.ingress.kubernetes.io/client-body-buffer-size: "8k"
  nginx.ingress.kubernetes.io/proxy-body-size: "5m"
  nginx.ingress.kubernetes.io/proxy-buffer-size: "8k"

确认已应用更改:

kubectl -n <namespace> describe ingress <ingress-name>

引用:

客户端缓冲区大小 自定义最大身体尺寸

如果这不好,有人会纠正我,但我喜欢尽可能地锁定所有内容,如果您只有一个上传目标(通常情况下),那么只需将您的更改定向到一个文件。这适用于我的Ubuntu nginx-extras mainline 1.7+包:

location = /upload.php {
    client_max_body_size 102M;
    fastcgi_param PHP_VALUE "upload_max_filesize=102M \n post_max_size=102M";
    (...)
}