在同一端口上运行多个节点(快速)应用程序

我有多个Node应用程序(构build在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

你可以使用app.use()

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

你可以运行它们作为单独的应用程序监听不同的端口,然后有一个代理服务器(如https://github.com/nodejitsu/node-http-proxy/ )根据请求的URL在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' } }; 

像我一样的魅力( http://nerdpress.org/2012/04/20/hosting-multiple-express-node-js-apps-on-port-80/ )。 我不是那么热衷于把它们作为子应用程序安装,因为我想让它们独立运行。

你可以创build一个主应用程序(比如app)并行到你的应用程序,并使用app.use('',require('./ app1 / yourApp.js)来初始化辅助应用程序(在你的情况下为app1,app2,app3) “)。

所有的应用程序(app1,app2,app3)都需要创build应用程序并使用var app = module.exports = express()导出它。 你不需要在所有的子程序中创build服务器实例或者调用app.listen; 所有的子应用程序可以通过主应用程序侦听端口来提供服务。