nginx+tomcat架构 文件上传进度条问题

前因最近做了个项目,访问量比较大,于是采用1台nginx,多个tomcat进行负载均衡、集群架构,其中在我的项目中有文件上传功能,写了文件上传进度监控程序。没使用nginx时上传进度能正常显示,用了之后进度不显示了,然后等待很久才出现上传成功;后端附件服务器使用阿里云的oss,刚刚开始做的时候是监听OSS上传进度。经过使用nginx+tomcat上传时的情况:使用tomca...
摘要由CSDN通过智能技术生成

前因

最近做了个项目,访问量比较大,于是采用1台nginx,多个tomcat进行负载均衡、集群架构,其中在我的项目中有文件上传功能,写了文件上传进度监控程序。没使用nginx时上传进度能正常显示,用了之后进度不显示了,然后等待很久才出现上传成功;后端附件服务器使用阿里云的oss,刚刚开始做的时候是监听OSS上传进度。

经过

使用nginx+tomcat上传时的情况:

使用tomcat本地上传时的情况:

原因

NGINX会把整个附件数据先本地缓存,缓存完毕后转发给你的应用服务器,在这个过程之间,你的进度条永远就是0了,待转发后,你的进度条可能瞬间就可以到达一百,只转发了一次。

解决办法

在nginx.conf文件的http中加上一句配置:proxy_request_buffering off  

又因为proxy_request_buffering是一个危险的配置,不能针对所有location关掉,如果有效,就针对上传地址把它关掉。

例如:

location /upload
{
        proxy_set_header X-Forward-For $remote_addr;
        proxy_pass http://127.0.0.1:8090;
        proxy_request_buffering off;
        client_max_body_size    10000m;
}

另一个问题

但是我个人发现,哪个“proxy_request_buffering”配置已经奏效了,但是发现tomcat接受完整个文件后才进去代码里面,然而我的监听进度条是等待程序返回后,才开始请求OSS上传进度。当上传到OSS中,因为我的服务器又是阿里云的,与OSS服务器是同一个局域网,上传 10M的 文件很快就上传成功,进度条瞬间就100%。

解决办法

当文件上传时,我要监听上传到tomc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值