使用Nginx的时候,突然看到日志里蹦出个413错误,那多半是客户端上传的东西太大了,超过了Nginx允许的极限值。简单说,就是服务器说“你塞进来的东西我吞不下”。

碰到这种情况,解决办法其实不复杂,通常按下面几步走就能搞定。
先动Nginx配置文件
找到Nginx的主配置文件(一般在/etc/nginx/nginx.conf,或者站点配置/etc/nginx/sites-a vailable/your_domain.conf里)。里面有个叫client_max_body_size的指令,默认值通常只有1M或8M,太小了。把它改大一点,比如50M或者100M,具体看你业务需要多大文件上传。例如:http { ... client_max_body_size 50M; ... }如果用了PHP,别忘了同步改php.ini
很多上传场景背后是PHP在接数据。这时候需要检查php.ini里的两个参数:upload_max_filesize和post_max_size。这两个值最好设置成和Nginx那边一样大,或者更大一些,否则前端过了Nginx,PHP自己又卡住了,依然报错。比如:upload_max_filesize = 50M post_max_size = 50M改完配置,重启服务才生效
Nginx和PHP-FPM都需要重启一下。大部分Linux发行版用systemctl就行:sudo systemctl restart nginx sudo systemctl restart php-fpm或者老一点的系统用
service命令:sudo service nginx restart sudo service php-fpm restart检查有没有“隐形”的限制
如果上面三步都做了还是报413,那就要排查一下是不是有其他服务器软件(比如前面还套了一层Apache、Lighttpd之类的反向袋里),或者看看有没有.htaccess文件、负载均衡器之类的额外限制。这些地方也可能有自己的大小上限。
走完这些步骤,413错误基本就解决了。万一还不行,直接去翻Nginx的错误日志(通常 /var/log/nginx/error.log),里面会告诉你更具体的拒收原因——顺着日志的线索再往下查,总能找到症结所在。