Как открыть в разных портах некоторые маршруты приложений NestJS

#routes #port #nestjs

Вопрос:

У меня есть приложение NestJS, которое обслуживается в одном конкретном порту, но мне нужно предоставить некоторые маршруты (например, метрики /метрики Prometheus) с другим портом.

Можно ли это сделать в приложении NestJS?

Ответ №1:

Да, вы можете, просто создайте экземпляры прикладных модулей отдельно. (Я предполагаю, что ваше приложение организовано в виде модулей).

Вот краткий пример:

 async function bootstrap() {
  // module with the selected endpoints
  const firstApp = await NestFactory.create(FirstAppModule);
  await firstApp.listen(3001);
  // module with different endpoints
  const secondApp = await NestFactory.create(SecondAppModule);
  await secondApp.listen(3002);
}
 

P.S. Я не рекомендую запускать несколько серверов в одном и том же узловом процессе, так как это плохо влияет на производительность, а также усложняет мониторинг и управление их жизненным циклом. Я предлагаю использовать для этой цели какой-нибудь менеджер процессов, например pm2.

Комментарии:

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