Ответ 1
Вы можете использовать app.use()
:
app
.use('/app1', require('./app1/index').app)
.use('/app2', require('./app2/index').app)
.listen(8080);
У меня несколько приложений 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
Вы можете использовать app.use()
:
app
.use('/app1', require('./app1/index').app)
.use('/app2', require('./app2/index').app)
.listen(8080);
Вы можете запускать их как отдельные приложения, слушая разные порты, а затем иметь прокси (например, 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/). Я не был так увлечен тем, что они монтировались в качестве суб-приложений, как это было предложено в комментариях, потому что я хотел, чтобы они запускались независимо...
Вы можете создать одно основное приложение (например, приложение) параллельно с вашими приложениями и инициализировать вторичные приложения (в вашем случае app1, app2, app3), используя app.use('', require ('./app1/yourApp.js').
Все ваши приложения (app1, app2, app3) должны создавать приложение и экспортировать его, используя var app = module.exports = express(); Вам не нужно создавать экземпляр сервера или вызвать app.listen во всех субаппах; все суб-приложения могут обслуживаться через основной порт прослушивания приложений.