node.js - 即使使用长超时配置,带有 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 的生产环境中,它会停止并返回超时。有没有什么办法解决这一问题?
解决方案
推荐阅读
- python - 如何在 pytest 中将自定义部分添加到终端报告
- php - 无法使用标签和 Base64在 Chrome 上下载 JPG 文件
- ios - 如何在不重复的情况下在 SwiftUI 中创建对象的实例?
- java - 检查一个类是否被另一个类通过字节码引用
- ios - 防止 UIStepper 为 0?
- php - PHP oci_bind_by_name 绑定函数返回参数 -1 不起作用
- java - 我想从手机的内部存储中获取我选择的文件大小(以 MB 为单位)。但 file.length() 总是返回 0
- python - 从 Azure Blob 存储读取 XML 文件
- liferay - 如何让用户与 Liferay 中的团队相关联
- jira - Jira - 最后一个子任务关闭时自动关闭主项目