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