nginx+tomcat 使用 apache 的 FtpClient 上传图片时由于多线程问题导致的文件大小为 0 的问题
最近遇到这样一个问题:通过 nginx 反向代理上传图片时,发现上传之后的文件大小为 0,并且 nginx 出
现 504 错误,也就是说上传图片失败,但有时又不为 0,,也就是说可以正常上传图片,直接通过ssh 客户
端工具上传图片也是没问题的。
nginx 出现 504 网关超时错误是因为上游 upstream 服务器 tomcat 请求时响应时间过长,nginx 迟迟无
法收到 tomcat 的返回,于是出现超时错误,为什么会出现这种错误呢?
刚开始以为是 nginx 超时参数配置不当引起的,于是不断的对 nginx 相关超时参数和缓存参数进行调整,
client_max_body_size
client_body_buffer_size
proxy_connect_timeout
proxy_send_timeout
proxy_busy_buffers_size
proxy_temp_file_write_size
难道是防火墙 iptables 问题,各种关闭防火墙,重试,依然无果,问题依旧。
难道是 Linux 目录权限问题,各种授权 777,重试,问题依旧。
研究了 ftp 的主动模式和被动模式:
1.FTP 的 PORT(主动模式)和 PASV(被动模式)
(1) PORT(主动模式)
PORT 中文称为主动模式,工作的原理: FTP 客户端连接到 FTP 服务器的 21 端口,发送用户名和密
码登录,登录成功后要 list 列表或者读取数据时,客户端随机开放一个端口(1024 以上),发送 PORT