有时候作为nginx web服务进行上传文件的时候会遇到“client intended to send too large body”的错误,我们该如何处理? 网上很多文章说明并不清晰,这边总结给需要的朋友,避免踩坑。
报错其nginx控制参数: client_max_body_size
来看看网上部分文章说明不清晰的地方,首先我们来看一下官方的说法:
| Syntax: |
client_max_body_size |
|---|---|
| Default: |
client_max_body_size 1m;
|
| Context: |
http, server, location |
1、client_max_body_size 1m; 也就是说这个值如果不配置,有一个1m的限制,也就是上传文件超过1m, 会报错,这在很多需要上传文件的场景下,是不够的,所以需要手动增加这个参数到配置文件,来控制文件可以上传的大小限制;
2、另外往下一行,我们知道,这个client_max_body_size参数的作用域是
http, server, location,这也就说明,我们可以对全局配置和单个server配置甚至是单个location段进行限制和配置,这个地方很多朋友有错误,错误的地方是,全局限制了client_max_body_size,单个server的配置中也加了client_max_body_size,这时候如果大小不同,我们需要知道,越小的范围段,控制优先级越高,这和我们之前的文章说明是一样的,也就是 location > server > http 。题外话: 如果使用nginx+php的结构我们有时候还需要查看或修改php配置参数中 upload_max_filesize =2M 参数。

