Nginx一直说客户端打算发送太大的身体。谷歌和RTM让我找到了client_max_body_size。我在Nginx .conf和vhost conf中设置了200m,重启了Nginx几次,但我仍然得到错误消息。
我是不是忽略了什么?后端是php-fpm (max_post_size和max_upload_file_size是相应设置的)。
Nginx一直说客户端打算发送太大的身体。谷歌和RTM让我找到了client_max_body_size。我在Nginx .conf和vhost conf中设置了200m,重启了Nginx几次,但我仍然得到错误消息。
我是不是忽略了什么?后端是php-fpm (max_post_size和max_upload_file_size是相应设置的)。
当前回答
如果这不好,有人会纠正我,但我喜欢尽可能地锁定所有内容,如果您只有一个上传目标(通常情况下),那么只需将您的更改定向到一个文件。这适用于我的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";
(...)
}
其他回答
假设你已经在其他答案中设置了client_max_body_size和各种PHP设置(upload_max_filesize / post_max_size等),然后重新启动或重新加载NGINX和PHP,没有任何结果,运行这个…
nginx -
这会让你在NGINX配置中出现任何未解决的错误。在我的情况下,我在413错误中挣扎了一整天,才意识到NGINX配置中还有其他一些未解决的SSL错误(certs的错误路径)需要更正。一旦我修复了从'nginx -T'得到的未解决的问题,重新加载nginx,尤里卡!!这就解决了问题。
如果你正在使用windows版本的nginx,你可以尝试杀死所有的nginx进程并重新启动它来查看。 我在我的环境中遇到了同样的问题,但用这个解决方案解决了它。
如果你尝试了上面的选项,没有成功,你也使用IIS (iisnode)托管你的节点应用程序,把这段代码放在web上。Config帮我解决了这个问题:
这里是参考资料:https://www.inflectra.com/support/knowledgebase/kb306.aspx
此外,您可以更改允许的长度,因为现在我认为它是2GB。根据你的需要修改它。
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483648" />
</requestFiltering>
</security>
如果这不好,有人会纠正我,但我喜欢尽可能地锁定所有内容,如果您只有一个上传目标(通常情况下),那么只需将您的更改定向到一个文件。这适用于我的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";
(...)
}
根据nginx文档,你可以在以下上下文中设置client_max_body_size为20m(或任何你需要的值):
context: http, server, location