获取 504 GATEWAY_TIMEOUT NodeJs

新手上路,请多包涵

页面加载 60 秒后,我收到 504 GATEWAY_TIMEOUT http 响应。

它不是正在加载的实际页面,而是正在执行的进程。我预计它需要超过 60 秒,并且我试图增加超时值,但它没有帮助。

我正在使用 express 框架进行路由,并将作业托管在 EB(AWS Elastic Beanstalk)上。由于我增加了我可能在 AWS 控制台中的 EB 和负载均衡器上找到的所有超时值,我假设它必须是应用程序本身的超时设置为 60 秒。但是,我可能是错的。

我的代码:

 /* GET home page. */
router.get('/main',function(req, res, next) {
req.connection.setTimeout(600000);
        mainProcess(res);
        //res.send("mainProcess() called");
    });

更新:

除此之外,我尝试了另一种方法。我将此代码添加到 app.js

 var connectTimeout = require('connect-timeout');
var longTimeout = connectTimeout({ time: 600000 });
app.use(longTimeout);

也没有帮助。

UPDATE2: 我还尝试增加 /bin/www 中的超时时间,如下所示:

 var server = http.createServer(app);
server.timeout=600000;

UPDATE3: 我注意到超时与nginx配置有关。正如我的日志所说: upstream timed out (110: Connection timed out) while reading response header 但是,我想不出在 Elastic beanstalk 上编辑 nginx 配置的方法。我做了一些研究,但对我来说这一切似乎都不标准,而且对于这么简单的事情来说太死板了。

原文由 Ondrej Tokar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 941
1 个回答

根据您的 Update3 信息,我认为您应该配置 nginx 配置文件,例如:

 server {
    listen  80;
    server_name     *.*;
    location / {
            proxy_pass http://192.168.0.100:8001;
            proxy_connect_timeout 60s;
            proxy_read_timeout 5400s;
            proxy_send_timeout 5400s;
            proxy_set_header host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_redirect default;
    }
}

proxy_read_timeout 和 proxy_send_timeout 与您的问题有关。

原文由 Ken 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题