今天研发部的同事找到我。说他们的网站在用域名访问的时候导出文件出现504错误:
nginx 504 Gateway Time-out
然而用IP地址访问的时候正常。让我帮忙看看是不是nginx配置的问题。
了解了一下他们的应用场景。导出文件功能首先会在后台根据各种数据生成一个文件,这个文件可能好几十兆。然后才会进入下载流程。重现他们问题的时候发现,域名访问的时候,最多一分钟后没响应就返回504 gateway time-out了。所以,估计是nginx在读请求时超时。
网上各种百度,试过在nginx里面加如下配置:
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 256M;
fastcgi_buffers 8 256M;#8 128
fastcgi_busy_buffers_size 512M;
fastcgi_temp_file_write_size 512M;
测试无效,跟fastcgi没关系。
接着在location里面添加proxy设置。访问没有出现超时。问题解决。
proxy_connect_timeout 300s;
proxy_send_timeout 300s; #这个配置是问题的关键
proxy_read_timeout 300s;
这个问题主要是nginx读请求超时造成的。
网友评论