首页 > 解决方案 > Node.js:在同一台服务器上运行多个应用程序

问题描述

我想在同一台服务器上运行多个 Node.js (Express) 应用程序。我知道两种不同的方法:

  1. 使用反向代理将请求重定向到侦听不同端口的应用程序。例如

    https://website.com/app1 --> https://localhost:1001 https://website.com/app2 --> https://localhost:1002

  2. 使用 express 中间件在同一端口上运行应用程序(在同一端口上运行多个节点(Express)应用程序):

app
  .use('/app1', require('./app1/index').app)
  .use('/app2', require('./app2/index').app)
  .listen(8080);

这两种方法的优缺点是什么?

标签: javascriptnode.jsexpress

解决方案


以 express 方式运行它们的最大缺点是两个应用程序都将共享 Node 资源。一台服务器将同时处理这两个请求,因此它的所有资源(内存、CPU,尤其是单线程的)都将被共享。这也意味着引入到一个应用程序的任何安全问题现在都会影响两个应用程序。

从好的方面来说,如果你的物理服务器很小,你只有一组开销,即使那个单节点进程在 2 个应用程序之间共享它的资源,你的物理服务器也只需要运行一个节点进程。

最理想的情况是,每个应用程序都应该有自己的 Node 进程。它将关注点、安全性、包、资源分开。在部署方面,它允许您单独扩展它们,使其更易于调试。

基本上,除非您有充分的理由不这样做,否则您应该将它们分成 2 个节点应用程序。


推荐阅读