如何使用免费的Dyno在Heroku上使用NodeJS代理?

时间:2019-01-05 15:18:17

标签: node.js express heroku proxy

我在Heroku上有一个主服务器,它可以处理对其他2个应用程序的重定向。 基本上有3个服务器:
-主服务器(处理重定向)
-主应用服务器
-辅助应用服务器

下面的代码非常适合重定向,但是我对带有免费dyno的服务器的睡眠有问题。 当用户尝试访问辅助应用程序时,最初它会唤醒主服务器。主服务器唤醒时,它将尝试唤醒辅助应用程序。
由于某种原因,它会引发错误(“应用程序错误”),但是如果刷新页面,它将立即为辅助应用程序提供服务。

如何避免出现此错误消息?

const express = require('express');
const proxy = require('http-proxy-middleware');

const app = express();

const port = process.env.PORT || 3000;
const router = {
    'secondaryapp.example.com': 'https://secondaryapp.herokuapp.com'
};

app.use('/', proxy({
    target: 'https://mainapp.herokuapp.com',
    changeOrigin: true,
    router: router
}));

app.listen(port);

1 个答案:

答案 0 :(得分:0)

我不确定是否可以采取一些措施来避免此错误,但是至少您可以捕获它,并在需要时重试多个请求,从而使dyno能够正确唤醒。

第一个请求返回的错误代码是什么?

运行heroku logs --tail --app mainapp/secondaryapp时是否有任何有用的跟踪记录?