У меня есть два домена abc.com
и xyz.com
, указывающие на один и тот же сервер NodeJS. В зависимости от домена я хочу загрузить конфигурацию, которая будет сохраняться для этого домена, то есть для xyz.com
я хочу подключиться к Database1
, а для abc.com
я хочу подключиться к Database2
.
Как мне это сделать? Возможно ли или рекомендуется это сделать?
Я начал с загрузки конфигурации по первому запросу, получив имя хоста от req.hostname
. Есть ли лучший способ сделать это?
Несколько стратегий -
Ваш обратный прокси-сервер отправляет запрос на правильный сервер. В настоящее время я делаю это, размещая несколько блогов-призраков на одном и том же vps. Один работает на порту 3000, другой на 3010.
Плюсы — менее хрупкая установка, более простое масштабирование, приложению не нужно знать об операционной среде. Если один домен подвергается атаке, другой автоматически не становится жертвой.
Минусы — может быть невозможно в средах с ограниченными ресурсами. Развертывание может включать повторяющуюся работу.
Отличный вариант, если набор функций почти такой же, но меняется только доменное имя. Вы читаете файл конфигурации, как вы сказали, в зависимости от имени хоста.
Плюсы — более простое развертывание, отличный вариант для сред с ограниченными ресурсами.
Минусы — излишне тесная связь, все домены станут недоступными в случае ошибок сервера, могут возникнуть проблемы с масштабированием.
Лично я предпочитаю развертывание на разных портах до тех пор, пока код не требует зависимости от имен хостов. Если вы просто создаете продукт, где в URL-адресе должен присутствовать какой-то уникальный идентификатор, например mycompany.slack.com
, то использование поддоменов в DNS может быть лучшей идеей.
Я использовал аналогичный подход к работе на разных портах и настроил обратный прокси-сервер для перенаправления запросов на определенный сервер на основе имени хоста. Кстати, спасибо за ответ.