Nginx上游为超长的独角兽请求超时

时间:2015-05-09 15:59:24

标签: ruby-on-rails nginx unicorn

我有一个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秒后仍然超时?

0 个答案:

没有答案