Nginx【问题 01】前端出现的 413 错误 Request Entity Too Large 问题解决

173 阅读1分钟

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上传。通过合理配置该参数,可灵活控制不同层级的文件上传大小限制。