修复Nginx报错client intended to send too large body: 388153 bytes

时间:2020-01-09 10:38:25  来源:igfitidea点击:

尝试使用Nginx Web服务器上传文件时出现以下错误:

2018/01/21 12:19:23 \[error\] 375#375: \*25019 client intended to send too large body: 388153 bytes, 

如何解决此问题并允许文件上传最大10MB?

Nginx Web服务器中的client_max_body_size指令设置了客户端请求正文允许的最大大小,该大小在Content-Length请求标头字段中指定。
如果请求的大小超过配置的值,则会向客户端返回413(请求实体太大)错误。
您需要同时配置nginx和php(或其他应用)以允许上传大小。
让我们看看如何修复打算在Nginx服务器中发送太大bod的客户端。

如何修复旨在在Nginx中发送太大的正文错误的客户端

首先,您需要通过输入vi命令来编辑/etc/nginx/nginx.conf文件:

$ sudo vi /etc/nginx/nginx.conf

在http(服务器/位置)部分中,添加以下指令以将最大允许大小设置为10MB:

client_max_body_size 10M;

保存并关闭文件。

测试Nginx配置是否存在错误

运行以下命令:

$ sudo nginx -t

输出示例:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

如果没有错误,请重新启动Nginx Web服务器。

$ sudo systemctl reload nginx

或者

$ sudo service nginx reload

通过上传大文件来验证配置。
确保您也观看了nginx错误日志:

$ sudo tail -f /var/log/nginx/error.log

如何配置php以接受最大10MB的上传

编辑您的php.ini文件,并确保其中包含以下两行:

$ sudo vi /etc/php.ini

追加或编辑如下:

upload_max_filesize=10M
post_max_size=10M

保存并关闭文件。
重新启动Nginx PHP-fpm服务:

$ sudo systemctl restart php-fpm

或者

$ sudo /etc/init.d/php-fpm restart

或者

# /usr/local/etc/rc.d/php-fpm restart

现在上传文件并进行测试。

总结

简而言之,您需要使用grep命令/egrep命令/tail命令在nginx.conf和php.ini中包含以下行:

$ grep client_max_body_size /etc/nginx/options.conf
$ egrep 'upload_max_filesize|post_max_size' /etc/php/7.0/fpm/conf.d/99-custom.ini
$ tail -f /var/log/nginx/error.log
$ tail -f /var/log/nginx/php-fpm-error.log