页面加载 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 许可协议
根据您的 Update3 信息,我认为您应该配置 nginx 配置文件,例如:
proxy_read_timeout 和 proxy_send_timeout 与您的问题有关。