记录一些常用的函数和瞎折腾的过程……

解决nginx报错:413 Request Entity Too Large

提醒:本文最后更新于 270 天前,文中所描述的信息可能已发生改变,请谨慎使用。

使用FileRun网盘时,发现上传大文件时报错: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.psay.cn;
  ……
  client_max_body_size 500m;
  client_body_buffer_size 2m;
  ……
}

3、指定路由生效:

location /path/ {
  ……
  client_max_body_size 500m;
  client_body_buffer_size 2m;
  ……
}