Предлагает ли AWS способ маршрутизации трафика HTTPS к двум различным экземплярам EC2 на основе пути каталога?

10

Мне было интересно, возможно ли следующее с предложениями AWS?

https://www.example.com/a/-> обслуживается Apache в экземпляре A EC2

https://www.example.com/b/-> обслуживается Apache в экземпляре B EC2

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

Я понимаю, что это возможно при использовании какого-либо прокси-сервера, но есть ли более простое решение с одним из предложений AWS.

EC2 Load Balancer , кажется, не позволяет коммутации на основе путей каталога. Маршрут 53 работает на уровне DNS, который не имеет информации о пути для возврата IP-адресов на основании этого.

Джозеф Ши
источник
Балансировщик нагрузки EC2 настолько глуп, что не читает Host:заголовки и не фильтрует фиктивный трафик. Кажется маловероятным, что они добавят какие-либо функции, которые вы запрашиваете, если просмотр заголовков - это слишком большая работа для них. К счастью, у них есть другие варианты.
птенцы

Ответы:

29

Используйте AWS Application Balancer , который выполняет маршрутизацию на основе пути . Вторая ссылка - это руководство, как это сделать.

Короче говоря, вы настроили свой ALB как обычно, затем выполните следующие действия (скопировано из учебника AWS):

  • На вкладке Слушатели используйте стрелку, чтобы просмотреть правила для слушателя, а затем выберите Добавить правило . Укажите правило следующим образом:

  • В качестве имени целевой группы выберите вторую целевую группу, которую вы создали.

  • Для шаблона Path укажите точный шаблон, который будет использоваться для маршрутизации на основе пути (например, / img / *). Для получения дополнительной информации см. Правила прослушивателя.

  • Выберите Сохранить .

Тим
источник
Спасибо! Первоначально я проверил балансировщик нагрузки приложений EC2, прошел через мастер, но так и не создал его. Мастер не дал вариант пути. Как указывалось в руководстве, сначала нужно создать его, а затем редактировать правила.
Джозеф Ши
9

В дополнение к отличному ответу Тима, вы также можете достичь этого с CloudFront .

Во-первых, создайте свой дистрибутив , добавив источники для Экземпляра EC2 и Экземпляра EC2 B (которые также могут быть балансировщиками нагрузки, хостами не-AWS или даже корзинами S3).

Затем настройте правила поведения кэша для сопоставления / a / * и / b / * с соответствующими источниками.

То, имеет ли смысл использовать CloudFront для этой цели, будет зависеть от вашего приложения и необходимости CDN.

Зак Липтон
источник
4
Это может также применяться , если вы хотите /a*и /b*быть обработаны различными службами, различными счетами, различных регионах, или даже один путь , обрабатываемых что - то работает в АМС , а другой в другом месте. CloudFront имеет много вариантов использования, которые концептуально не требуют CDN вообще.
Майкл - sqlbot