nginx+tomcat使用apache的FtpClient上传图片时由于多线程问题导致的文件大小为0的问题

在nginx反向代理下使用Apache FtpClient上传图片时,遇到文件大小为0和504网关超时的问题。经过排查,不是nginx超时配置、iptables防火墙、目录权限或FTP的主动/被动模式导致的,而是多线程并发上传时的问题。改为多线程控制后,问题得到解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近遇到这样一个问题:通过nginx反向代理上传图片时,发现上传之后的文件大小为0,并且nginx出现504错误,也就是说上传图片失败,但有时又不为0,,也就是说可以正常上传图片,直接通过ssh客户端工具上传图片也是没问题的。

nginx出现504网关超时错误是因为上游upstream服务器tomcat请求时响应时间过长,nginx迟迟无法收到tomcat的返回,于是出现超时错误,为什么会出现这种错误呢?

刚开始以为是nginx超时参数配置不当引起的,于是不断的对nginx相关超时参数和缓存参数进行调整,无果,

client_max_body_size         10m;
client_body_buffer_size       128k;
proxy_connect_timeout        90;
proxy_send_timeout          90;
proxy_read_timeout          90;
proxy_buffer_size           4k;
proxy_buffers             4 32k;
proxy_busy_buffers_size       64k;
proxy_temp_file_write_size     64k;

问题依旧。

难道是防火墙iptables问题,各种关闭防火墙,重试,依然无果,问题依旧。

难道是linux目录权限问题,各种授权777,重试,问题依旧。

研究了ftp的主动模式和被动模式:

 1.FTP的PORT(主动模式)和PASV(被动模式)

    (1) PORT(主动模式)

    PORT中文称为主动模式,工作的原理: FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据,原理如下图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI绘画(可定制)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值