nginx 更改配置client_max_body_size没有生效报413

springboot已配置了文件上传最大限制
#servlet multipart
spring.servlet.multipart.max-file-size=100Mb
spring.servlet.multipart.max-request-size=100Mb
上传控制器也配置了文件上传大小
/**
* 通用上传文件.文件的展示路径由调用方组合
*
* @param file
* @param request
* @return
*/
@RequestMapping("/sys/upload")
public CallResult upload(@RequestParam(value = “files”) MultipartFile files, HttpServletRequest request) {
CallResult result = new CallResult<>();
if (files.isEmpty()) {
result.setStatus(ResultEnum.PARAM_ERROR.getStatus());
result.setMessage(SpringContextHolder.getMessage(“no.data”, null));
return result;
}
String filePath = null;
UploadItem item = new UploadItem();
item.setAllowedFiles(AllowFiles);
item.setCreateDateDir(true);
item.setFileSize(1024 * 1024 * 100);
try {
filePath = uploadFile(files, item);
// 本地上传图片,数据库存相对路径,页面展示时前端拼接路径
if (AttachmentFactory.getCurrentMethod() != AttactmenMethod.local) {
filePath = UrlHelper.mergeUrl(SysParam.getFileServer(), filePath);
}
result.setData(filePath);
} catch (Exception e) {
logger.error("", e);
result.setResult(ResultEnum.PARAM_ERROR.getStatus(), e.getMessage());
}
return result;
}

可是上传过程中,过于大的文件仍然报错413,由此可见nginx 更改配置client_max_body_size没有生效

在nginx使用过程中,上传文件的过程中,通常需要设置nginx报文大小限制。避免出现413 Request Entity Too Large。

经查证是location上配置了,导致覆盖了http上配置的,去了location上面的配置可以了,重启nginx,发现上传大的文件可以了,http、server、location三种配置方式,配置一种就可以,避免被覆盖。

别的情况是如下:
client_max_body_size设置在哪里,nginx -s reload后,依然一直报413.多次尝试reload,始终无效。最终决定kill 进程,restart,终于好了。

由此可见,nginx reload并不一定好使。

设置如下:

可以选择在http{ }中设置:client_max_body_size 20m;

也可以选择在server{ }中设置:client_max_body_size 20m;

还可以选择在location{ }中设置:client_max_body_size 20m;

三者到区别是:http{} 中控制着所有nginx收到的请求。而报文大小限制设置在server{}中,则控制该server收到的请求报文大小,同理,如果配置在location中,则报文大小限制,只对匹配了location 路由规则的请求生效。

 http{

#控制全局nginx所有请求报文大小

#client_max_body_size 20m;

	   server{

#控制该server的所有请求报文大小
#client_max_body_size 20m;
location a {
}
location b{
#控制满足该路由规则的请求报文大小
#client_max_body_size 20m;
}
}
server {
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值