Может ли часть веб-сайта жить на другом сервере? - PullRequest
0 голосов
/ 24 сентября 2019

Допустим, у меня есть веб-сайт www.myapp.com, могу ли я перенаправить весь трафик на myapp.com/api/ на другой сервер и весь трафик на myapp.com/blog/ на другом?

Я не хочу URLменять.Я знаю, что такого рода вещи связаны с балансировкой нагрузки, но меня не волнует балансировка нагрузки.Я уже создал веб-сайт и API как отдельные сервисы, я хочу, чтобы они жили под одним и тем же доменным именем, но разными путями.Возможно ли это?

Возможно, это звучит очень глупо, но я не смог найти никаких ресурсов :( Одна часть приложения также Dockerized и живет на другом сервере.

1 Ответ

0 голосов
/ 24 сентября 2019

Да, это возможно.Для этого вы можете использовать обратный прокси-сервер веб-серверов вместе с Обнаружение службы докера .

Обнаружение службы докера в основном работает, когда вы подключаете несколько контейнеров докера к одной и той же сети, так что вы можете получить доступ к контейнерам, используя имя хоста контейнера.Подвох здесь в том, что эти контейнеры должны быть подключены к одной и той же сети.

Поскольку вы упомянули, что часть приложения Dockerized и живет отдельно, существуют различные решения.

Допустим,что:

  1. Nginx - это веб-сервер, который работает на сервере 1.
  2. Dockerized App находится на сервере 2.
  3. Сервер1 и сервер2 могут взаимодействовать друг с другом.
  4. Вы знаете Docker, Docker Swarm.

Использование Docker Swarm и обнаружение служб: * Рекомендуется *

Создать Docker Swarm кластер и подключитьсяоба сервера.Затем создайте оверлейную сеть .После этого запустите Nginx на сервере server1 в той же сети и запустите приложение dockerized на сервере server2 в той же сети. Теперь вы можете использовать Nginx proxy_pass для подключения к докер-приложению server2 .

Использование Docker и сопоставления портов:

Запустите приложение Dockerized на карте server2 и порты с помощью привязки порта докера .В server1 используйте обратный прокси-сервер для подключения к сопоставленным портам server2.

Примечание:

В обоих случаях убедитесь, что

  1. И server1, и server2 могут связываться друг с другом.
  2. Откройте соответствующие порты в брандмауэре согласно соответствующей документации.
  3. Вы также можете использовать другие веб-серверы, такие как apache, и можно выполнить те же действия.

Ограничения: (Применимо только для обратного прокси-сервера Nginx)

Когда перезапускаемое приложение перезапускается, кэш Nginx не обновляется, так как это может привести к ошибке 502 Bad Gateway.Чтобы справиться с этим, вам может понадобиться заставить Nginx обновлять кэш один раз за определенный интервал. Обратитесь к моему ответу, чтобы узнать больше о том, как это сделать .

...