解决Nginx报错:413 Request Entity Too Large

本文最后更新于 2024年5月9日,已超过 3 月没有更新,如果文章内容失效,请反馈给我们,谢谢!

发现上传大文件时报错:413 Request Entity Too Large。以为单纯的是php配置问题,于是将php.ini配置中的post_max_size和upload_max_filesize进行了调整,都设置为500Mb,但上传文件不足500Mb大小时,仍然报“413 Request Entity Too Large”这个错误。

后面发现还需要在nginx的配置文件中,添加client_max_body_size参数,并指定上传文件大小。

虽然改在上面的参数,不会有报413错误,但是在上传较大文件时,由于nignx的默认缓冲区可能不够,客户端上传较大文件时,还会有一个类似这样的警告“a client request body is buffered to a temporary file /usr/local/nginx/client_body_temp/0000000004”。这个警告虽然不影响使用,但默认缓冲区设置的太小的话,Nginx 会频繁读写硬盘,将对性能有很大的影响,但也不是越大越好,需要根据实际调整。

这两个参数可以放在3个位置使用,具体如下:

1、全局生效:

http {
  ……
  client_max_body_size 500m;
  client_body_buffer_size 2m;
  ……
}

2、指定域生效:

server{
  listen 80;
  server_name www.example.con;
  ……
  client_max_body_size 500m;
  client_body_buffer_size 2m;
  ……
}

3、指定路由生效:

location /path/ {
  ……
  client_max_body_size 500m;
  client_body_buffer_size 2m;
  ……
}
© 版权声明
分享是一种美德,转载请保留原链接
THE END

文章不错?点个赞呗
点赞 0 分享

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部