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是相应设置的)。
当前回答
请查看是否在http{}块中设置client_max_body_size指令,而不是在location{}块中设置client_max_body_size指令。我已经在http{}块内设置了它,它可以工作
其他回答
有同样的问题,client_max_body_size指令被忽略。
我的愚蠢错误是,我把一个文件放在了/etc/nginx/conf里面。D,不以.conf结尾。Nginx默认情况下不会加载这些。
根据nginx文档,你可以在以下上下文中设置client_max_body_size为20m(或任何你需要的值):
context: http, server, location
假设你已经在其他答案中设置了client_max_body_size和各种PHP设置(upload_max_filesize / post_max_size等),然后重新启动或重新加载NGINX和PHP,没有任何结果,运行这个…
nginx -
这会让你在NGINX配置中出现任何未解决的错误。在我的情况下,我在413错误中挣扎了一整天,才意识到NGINX配置中还有其他一些未解决的SSL错误(certs的错误路径)需要更正。一旦我修复了从'nginx -T'得到的未解决的问题,重新加载nginx,尤里卡!!这就解决了问题。
您需要应用以下更改:
Update php.ini (Find right ini file from phpinfo();) and increase post_max_size and upload_max_filesize to size you want: sed -i "s/post_max_size =.*/post_max_size = 200M/g" /etc/php5/fpm/php.ini sed -i "s/upload_max_filesize =.*/upload_max_filesize = 200M/g" /etc/php5/fpm/php.ini``` Update NginX settings for your website and add client_max_body_size value in your location, http, or server context. location / { client_max_body_size 200m; ... } Restart NginX and PHP-FPM: service nginx restart service php5-fpm restart
注意:有时(在我的情况下几乎每次),如果php-fpm进程没有通过service命令正确刷新,你需要杀死它。要做到这一点,你可以获得进程列表(ps -elf | grep php-fpm)并逐个杀死(kill -9 12345)或使用以下命令为你做:
ps -elf | grep php-fpm | grep -v grep | awk '{ print $4 }' | xargs kill -9
如果您正在使用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>
引用:
客户端缓冲区大小 自定义最大身体尺寸