Как мне организовать несколько серверов Express в одной системе?

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

44
задан Community 23 May 2017 в 12:32
поделиться