如何在不同的端口暴露一些 NestJS 应用路由

How to expose in different ports some of the NestJS application routes

我有一个在一个特定端口提供服务的 NestJS 应用程序,但我需要使用其他端口公开一些路由(例如 Prometheus metrics /metrics)。

是否可以在 NestJS 应用程序中执行此操作?

是的,您可以,只需分别实例化应用程序模块即可。 (我假设您的应用程序是按模块组织的)。

这是一个简短的例子:

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 这样的流程管理器。