Я использую один сервер для размещения нескольких веб-приложений Node.js, которые распределены по нескольким доменам. Моя текущая практика - запускать экспресс-сервер для каждого приложения на другом порту и запускать базовый сервер, который просто направляет (перенаправляет) запросы на правильный порт / экспресс-сервер. Это работает, но это означает, что мой базовый сервер маршрутизирует каждый отдельный HTTP-запрос (и перенаправляет его вручную), и что мои пользователи видят мои приложения как размещенные на [hostname.com]: 8000.
Проведя небольшое исследование, я обнаружил, что могу использовать http-proxy для маршрутизации, но мне все равно хотелось бы знать, есть ли лучшая практика для запуска нескольких серверов Express на та же система. Вот как я планирую это сделать:
Каждое веб-приложение будет иметь свою собственную папку с полной структурой папок Express (app.js, маршруты, представления и т. Д.). Приложения будут сгруппированы по доменам, поэтому пример структура папок будет такой:
hostname.com/
app.js
routes/
views/
...
app1/
app1.js
routes/
views/
...
app2
...
hostname2.com/
app.js
routes/
views/
...
Мне нужно будет запустить каждое приложение.js отдельно с node (или с forever , который я сейчас использую), и каждый из них должен будет использовать другой порт внутри, с перенаправлением между приложениями, указывающими на порт целевого приложения.
Итак, это мой текущий план. Какие проблемы с этим и каких подводных камней следует избегать? Самое главное, существует ли устоявшееся решение этой проблемы - проблемы размещения нескольких веб-приложений в одной системе с помощью Node.js / Express?
РЕДАКТИРОВАТЬ: Я действительно планирую в конечном итоге использовать WebSockets и HTTPS, а также пропускная способность, которую может поддерживать моя установка, не имеет для меня особого значения - это сервер разработки (по крайней мере, на данный момент). Спасибо Дэвиду Эллису за то, что он поднял вопрос о WebSockets.
ВТОРОЙ РЕДАКТИРОВАНИЕ: Спасибо ИевуТову и Дэвиду Эллису за их ответы, оба из которых очень помогли. Я все еще определяю общую структуру своего приложения, и похоже, что этот вопрос более подробно рассматривается в this StackOverflow question
ТРЕТИЙ РЕДАКТИРОВАНИЕ: С момента публикации этого вопроса я нашел несколько способов (хотя я есть еще много чего сделать). Посмотрите этот файл в моем репозитории на GitHub , в котором я использую то, что я узнал из ответов на этот вопрос!