Подтвердить что ты не робот

Запуск нескольких приложений Node (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
4b9b3361

Ответ 1

Вы можете использовать app.use():

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

Ответ 2

Вы можете запускать их как отдельные приложения, слушая разные порты, а затем иметь прокси (например, https://github.com/nodejitsu/node-http-proxy/), обслуживающий все на 8080 в зависимости от запрошенный URL.

как:

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/). Я не был так увлечен тем, что они монтировались в качестве суб-приложений, как это было предложено в комментариях, потому что я хотел, чтобы они запускались независимо...

Ответ 3

Вы можете создать одно основное приложение (например, приложение) параллельно с вашими приложениями и инициализировать вторичные приложения (в вашем случае app1, app2, app3), используя app.use('', require ('./app1/yourApp.js').

Все ваши приложения (app1, app2, app3) должны создавать приложение и экспортировать его, используя var app = module.exports = express(); Вам не нужно создавать экземпляр сервера или вызвать app.listen во всех субаппах; все суб-приложения могут обслуживаться через основной порт прослушивания приложений.