首页 > 解决方案 > 即使使用长超时配置,带有 NGINX 反向代理的节点似乎也会终止连接

问题描述

我有这个 Node 应用程序在 NGINX 反向代理后面运行。我的 Node 应用程序功能是下载一个消耗大约 80-120 秒的大型 XLS 文件。它在没有 NGINX 的情况下在本地工作,但是当我使用 NGINX 时,它似乎只是挂起并给了我超时错误。

我在我的 Node 应用程序中使用 MongoDB 和 Mongoose 作为数据库,它将查询数据库以下载 XLSX

下面是一段 NGINX 配置:

keepalive_timeout   70;
  

  client_max_body_size 16m;

  location    / {

    gzip on;
    gzip_min_length  1100;
    gzip_buffers  4 32k;
    gzip_types    text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml  application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml;
    gzip_vary on;
    gzip_comp_level  6;

    proxy_pass  http://indorelawan-80;
    
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_set_header X-Request-Start $msec;
    proxy_buffer_size 128k;
    proxy_buffers 4 256k;
    proxy_busy_buffers_size 256k;
    proxy_connect_timeout 600;
    proxy_send_timeout 600;
    proxy_read_timeout 600;
    send_timeout 600;
  }

如您所见,它使用 proxy_send_timeout 和 proxy_read_timeout 600 秒。当我在本地(没有 NGINX)尝试它时,它将下载 XLS 大约 83 秒左右。但是,在使用 NGINX 的生产环境中,它会停止并返回超时。有没有什么办法解决这一问题?

标签: node.jsnginx

解决方案


推荐阅读