Назад | Перейти на главную страницу

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

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

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

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

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

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

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

Использовать Балансировщик нагрузки приложений AWS, что делает Маршрутизация на основе пути. Вторая ссылка представляет собой учебник, как это сделать.

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

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

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

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

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

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

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

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

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