Running multiple Node (Express) apps on same port

前端 未结 3 420
情话喂你
情话喂你 2020-11-29 16:27

I have multiple Node applications (build on Express framework).

Now I have placed them like this -

  • /var/www/app1
  • /var/www/a
相关标签:
3条回答
  • 2020-11-29 17:10

    You can use app.use():

    app
      .use('/app1', require('./app1/index').app)
      .use('/app2', require('./app2/index').app)
      .listen(8080);
    
    0 讨论(0)
  • 2020-11-29 17:10

    You could run them as seperate apps listening to different ports and then have a proxy (like https://github.com/nodejitsu/node-http-proxy/ ) serving everything on 8080 depending on the requested URL.

    like:

    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'
      }
    };
    

    Works like charm for me ( http://nerdpress.org/2012/04/20/hosting-multiple-express-node-js-apps-on-port-80/). I wasn't so keen on having them mounted as sub-apps, as suggested in the comments because i wanted them to run independently...

    0 讨论(0)
  • 2020-11-29 17:20

    You can create one main app(say app) parallel to you apps, and have it initializing the secondary apps (in your case app1, app2, app3) using

    app.use('<the_context_you_need>', require('./app1/yourApp.js')
    

    All your apps (app1, app2, app3) need to create app and export it by using

    var app = module.exports = express();
    

    You need not create instance of server or call app.listen in all the subapps; all the sub-apps can be served via main app listen port.

    0 讨论(0)
提交回复
热议问题