我有一个Rails应用程序与nginx / unicorn一起提供,其中有一个特殊请求可能需要2-3分钟,因为它生成多个PDF并将它们添加到zip文件并使用send_data来允许客户端一次下载几份报告。
最初我的独角兽工人在30多岁后被杀,所以我在unicorn.rb文件中增加了超时。现在请求在60秒而不是30秒后得到504错误。所以我的独角兽工作人员正在被杀,但是nginx正在超时。
这是我的nginx error_log中的错误消息:
upstream timed out (110: Connection timed out) while reading response header from upstream
我已尝试增加所有有意义的nginx超时设置,但在service nginx restart
之后请求仍在超时。
这是我的nginx.conf和sites-enabled / default
/***nginx.conf***/
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 300s;
client_header_timeout 300s;
client_body_timeout 300s;
send_timeout 300s;
types_hash_max_size 2048;
}
/***sites-enabled/default***/
upstream app {
unix:[PATH]/unicorn.sock fail_timeout=120s;
}
server {
listen 80;
root [PATH];
server_name www.[URL].com [URL].com;
proxy_read_timeout 600s;
try_files $uri/index.html $uri @app;
access_log /var/log/nginx/APP_access.log combined;
error_log /var/log/nginx/APP_error.log;
location @app {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app;
proxy_read_timeout 600s;
proxy_connect_timeout 600s;
proxy_send_timeout 600s;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 75;
}
有谁能告诉我为什么nginx在60秒后仍然超时?