12 nginx + springboot 上传文件超过大小限制

前言

这是一个 上传文件的相关的问题

前端页面通过 nginx 部署 

上传文件到 nginx, 然后 nginx 转发给相应的后端服务, 然后 后端这边做具体的业务处理

这里涉及到 nginx 的最大客户端请求的配置, 后台服务这边 最大上传文件的配置

然后 后端这边, 主要是对应于 servlet 的相关的配置 

 

 

nginx 这边 Entity Too Large

这个限制处理是在 ngx_http_core_module 中处理的 

因为我们这里没有配置 client_max_body_size, 然后这里 使用的默认值 1*1024*1024

然后 我们这里上传的文件超过了 1M, 然后 这里 nginx 这边做了客户端请求大小的限制, 然后 响应的是 413 ENTITY_TOO_LARGE

 

location 中的 client_max_body_size 的默认值补偿的地方 

这里 location 中未配置, 值为 -1, prev 为父节点, 值也是未配置 取的默认值 

这里因为 当前节点为配置, 并且父节点存在配置, 则会有限获取父节点的配置 1M, 其次取默认值 1M

 

nginx 解析配置值的处理, 如果当前节点 未手动设置 

如果父节点 已经设置, 则优先获取父节点的值, 其次 获取默认值

 

手动配置一下 当前 block 或者父节点的 client_max_body_size 即可 

 

可以看到 这里的校验就通过了

 

  

 springboot 的 maximum upload size exceeded

服务器这边以 buf 为单位读取 二进制序列, 并做 check 

 

读取到 超过 sizeMax, 默认为 1M 的时候 抛出异常

 

 这里为具体抛出异常的地方, 也就是我们看到的异常信息 相关

 

ServletFileUpload 中的 fileSizeMax 来自于 这个 mce 

这个 mce 来自于 StandardWrapper.multipartConfigElement

 

StandardWrapper.multipartConfigElement  的配置来自于 DispatchServletRegistrationBean.multipartConfig

 

DispatchServletRegistrationBean.multipartConfig 来自于 DispatcherServletRegistrationConfiguration 的 multipartConfig

 

MultipartConfigElement 来自于 MultipartAutoConfiguration

 

然后 因为我们这里什么都没有配置, maxFileSize 使用的默认值 1M

配置方式 这里已经写得很清楚了

 

我们这里 更新配置 spring.servlet.multipart.max-file-size 为 100MB, 然后 看一下 具体的情况

 

 

然后 这里我们可以看到 fileSizeMax 已经调整成为了 100MB

然后 这个校验就过了

 

 

完 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值