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
nginx部署前端项目
* @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.Status());
result.Message(“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 (CurrentMethod() != AttactmenMethod.local) {
filePath = FileServer(), filePath);
}
result.setData(filePath);
} catch (Exception e) {
<("", e);
result.setResult(ResultEnum.Status(), 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 {
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。