1.报错信息
查看 Nginx 的 error.log 日志:
client intended to send too large body: 1434541 bytes
2.问题解决
nginx 使用 client_max_body_size 属性限制上传文件大小。它可以出现在 http, server, location 中。出现在不同的位置,表示其作用域不同。三者的关系如下:
http{
server{
location / {
}
}
}
- http的作用域 > server的作用域
- server的作用域 > location 的作用域
http{
client_max_body_size 1M;
server{
server_name localhost;
client_max_body_size 10M;
location =/upload {
client_max_body_size 100M;
}
}
}
-
http 作用域范围内,上传的文件最大为1M -
server 作用域范围内(使用 [http://localhost/xxx](http://localhost/xxx) 访问的应用),上传的文件最大为10M -
location 作用域范围内(使用 [http://localhost/upload](http://localhost/upload) 访问的应用),上传的文件最大为100M
client_max_body_size的默认值为1M。
client_max_body_size的特殊值0:为 0 时,将不限制上传文件大小。
3.小小的总结
当Nginx出现"413 Request Entity Too Large"错误时,表明客户端上传的文件大小超过了服务器限制。该问题可通过调整client_max_body_size参数解决,该参数可在http、server、location三个层级配置,作用域逐级缩小。默认值为1M,设置为0则不限制大小。示例中,http全局限制1M,server级限制10M,而特定location(/upload)允许100M上传。通过合理配置该参数,可灵活控制不同层级的文件上传大小限制。