最近遇到这样一个问题:通过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端口和客户端开放的端口连接,发送数据,原理如下图: