在同一端口上运行多个Node(Express)应用程序

use*_*328 54 javascript node.js express

我有多个Node应用程序(基于Express框架构建).

现在我把它们放在这样 -

  • /var/www/app1
  • /var/www/app2
  • /var/www/app3

现在我想在同一个端口上运行这3个应用程序(例如8080).那可能吗 ?

需要注意的一点是,每个应用都有这样的常见路线 -

  • app.get('/', func...);
  • app.get('/about', func...);
  • app.post('/foo', func...);
  • app.post('/bar', func...);

基本上我想像你可以用Apache/PHP设置那样做.

所以当你有一个LAMP堆栈时 -

  • /var/www/app1
  • /var/www/app2
  • /var/www/app3

您可以轻松地访问它们作为不同的应用程序 -

  • localhost/app1
  • localhost/app2
  • localhost/app3

use*_*328 57

你可以使用app.use():

app
  .use('/app1', require('./app1/index').app)
  .use('/app2', require('./app2/index').app)
  .listen(8080);
Run Code Online (Sandbox Code Playgroud)

  • 我猜如果一个应用程序崩溃,其他应用程序也会崩溃。 (2认同)

Max*_*ens 30

您可以将它们作为单独的应用程序运行,监听不同的端口,然后根据请求的URL提供代理服务(如https://github.com/nodejitsu/node-http-proxy/),为8080提供服务.

喜欢:

var options = {
  router: {
    'foo.com/baz': '127.0.0.1:8001',
    'foo.com/buz': '127.0.0.1:8002',
    'bar.com/buz': '127.0.0.1:8003'
  }
};
Run Code Online (Sandbox Code Playgroud)

对我来说就像魅力一样(http://nerdpress.org/2012/04/20/hosting-multiple-express-node-js-apps-on-port-80/).我并不热衷于将它们作为子应用程序挂载,正如评论中所建议的那样,因为我希望它们能够独立运行...