You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让前端axios请求支持等待NodeJS返回的2分钟长响应

问题根因

你遇到的504错误是网关超时,问题出在你架构中间层的Nginx服务,它的默认请求超时时间为60秒,你此前只调整了前端axios、Node服务的超时配置,漏掉了Nginx的超时参数调整,因此请求到1分钟时Nginx会主动断开连接,向前端返回504状态码。

解决方案

1. 调整Nginx代理超时配置

编辑你的Nginx站点配置文件,在转发到Node服务的location配置块中新增3个超时参数,将超时时间调整为10分钟(600秒),适配你的业务场景:

location / {
    proxy_pass http://127.0.0.1:你的Node服务端口;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # 新增超时配置,单位为秒
    proxy_connect_timeout 600s;
    proxy_send_timeout 600s;
    proxy_read_timeout 600s;
}

配置修改完成后,先执行nginx -t检查配置语法是否正确,确认无误后执行nginx -s reload重载配置即可生效。

2. 修正Express超时配置(可选,兼容高版本Express)

app.timeout参数在Express 4.x及以上版本已经被废弃,建议替换为服务实例级别的超时设置,避免配置不生效:

// NODE / EXPRESS SERVER
const server = app.listen(port, () => {
  console.log(`${portalStatus} NodeJS Listening on port ${port}`)
});
// 设置服务连接超时为10分钟
server.setTimeout(10 * 60 * 1000);

3. 其他排查项

如果调整Nginx配置后问题仍存在,检查你服务器链路中是否还有其他中间层:比如CDN、WAF、云服务商负载均衡等,这类产品默认超时也多为60秒,需要同步调整对应超时参数。

完成以上配置后,你的1分20秒的长请求就可以正常返回结果了。

内容的提问来源于stack exchange,提问作者Nilebac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:54:00