Экспресс-сервер прокси несколько приложений - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь написать обратный прокси-сервер для приложений с несколькими узлами.Когда делаете что-то вроде этого:

app.use('/', proxy('http://localhost:5010/'));
app.listen(8000, (err) => {
if (err) {
    return console.error('Application failed to start:', err);
}
    console.log('Application listening on port', 8000);
});

Работает как положено.Но когда я делаю что-то вроде

app.use('/', proxy('http://localhost:5010/'));
app.use('/config', proxy('http://localhost:5020/config'));
app.listen(8000, (err) => {
if (err) {
    return console.error('Application failed to start:', err);
}
    console.log('Application listening on port', 8000);
});

Мои запросы на http://localhost:8000/config перенаправляются на localhost: 5010

Если я только сделаю прокси на /config, он будет маршрутизироватьсядолжным образом.Это что-то о том, когда я делаю несколько прокси.

Я использую экспресс и экспресс-http-прокси для этого.

Есть мысли о том, как это сделать?

1 Ответ

0 голосов
/ 03 октября 2018

Экспресс промежуточное программное обеспечение выполняется в последовательности.Таким образом, ваша первая строка

app.use('/', proxy('http://localhost:5010/'));

верна для / и /config и всех маршрутов.Поэтому, если вы хотите сделать что-то другое для некоторых маршрутов, поместите это в верхнюю часть

app.use('/config', proxy('http://localhost:5020/config'));
app.use('/', proxy('http://localhost:5010/'));

Так что теперь ваша первая строка будет действительна только для пути /config, а все остальные маршрутизаторы будут перемещаться вперед в обработчик secod.

...