Nginx -413-上传文件太大

Nginx -413-上传文件太大

nginx里请求默认最大size为1M。 所以当上传文件的大小超过1M的时候会出现错误 http response code:413 REQUEST_ENTITY_TOO_LARGE 上传文件太大。

问题及方案

一开始我只设置client_max_body_size:50m, 错误“REQUEST_ENTITY_TOO_LARGE 上传文件太大 ”没有了,但是上传文件时有开始报 “ Failed to load resource: net: ERR_CONNECTION_RESET”,连接被重置了,我猜测连接因为什么原因被重置了, 所以我调大了指令keepalive_timeout的值为 650, 然后再上传大文件就可以了, 但是第二天有出现了 “ Failed to load resource: net: ERR_CONNECTION_RESET”, 参考https://www.cnblogs.com/kikyoqiang/p/16878961.html 博文, 添加了指令: send_timeout 650 (指定nginx发送response 给client的超时时间), 测试了上传15M的数据可以了,之后上传文件就可以了。

最后nginx的配置如下

nginx支持大文件上传的配置:

   
  http {
 		keepalive_timeout  650; # 客户端和nginx是长连接, 
    client_body_timeout      600;
    send_timeout 650;
    proxy_connect_timeout     60s; # nginx到后台server的连接的超时时间
    proxy_read_timeout      1m;  # nginx从后台server的读数据的超时时间
    proxy_send_timeout      1m; # nginx发送数据到后台server发送时间
    client_max_body_size  50m; #请求体的阈值
    client_body_buffer_size 500m; #Buffer的大小
    client_body_temp_path  /usr/local/nginx/client_body_temp 5 5; #如果buffer用完了,则把上传的数据写到client_body_temp_path指令配置的路径

  }
  

参数说明:

  • client_max_body_size 50m; 指定请求体的大小阈值 改完request body大小为50m

  • keepalive_timeout 650 650 指令的第一个值指定客户端到web server的连接超时时间,如果是0,连接为短连接; 第二个值为:在response header 添加一个参数“ “Keep-Alive: timeout=650””

    The first parameter sets a timeout during which a keep-alive client connection will stay open on the server side. The zero value disables keep-alive client connections.

  • send_timeout nginx发送response 到client的超时时间

但是还有一点需要注意,过来nginx这一关,请求就进入到application server,如tomcat,在tomcat 或者 spring web mvc里对上传文件的大小也有设置, 如果超时指定的阈值,仍让会报错。

Spring Boot里上传文件的配置

在spring boot里指定上传文件大小阈值的配置如下:

spring:
  servlet:
    multipart:
      location: /data/temp  #保持上传图片的临时路径
      enabled: true
      max-file-size: 20 #最大文件的size
      max-request-size: 30  #最大请求的size
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值