AWS: обслуживать несколько сайтов в одном домене - PullRequest
0 голосов
/ 16 января 2019

У меня есть доменное имя my-portal.com. Я хочу обслуживать статический веб-сайт от my-portal.com/site/a/. Я хочу обслуживать другой статический сайт от my-portal.com/site/b/.

Как я могу сделать это с ресурсами, которые предоставляет AWS?

Я пытался настроить два веб-сайта как два отдельных сегмента S3 с включенным статическим хостингом, а затем создал шлюз API с ресурсами /site/a и /site/b, настроенными в качестве HTTP-прокси для веб-сайтов S3.

Эта установка работала правильно для большинства случаев. Но когда браузер пытается загрузить двоичный файл (шрифт, изображение и т. Д.) С моего статического веб-сайта, API-шлюз неправильно обрабатывает этот файл и отвечает поврежденным (поскольку он ведет себя странно с двоичными файлами).

Какие еще способы достижения того же результата у меня есть?

Ответы [ 3 ]

0 голосов
/ 16 января 2019

Этого легко достичь, используя AWS CloudFront. Используйте поведения, чтобы выбрать источник на основе пути. CloudFront имеет встроенную интеграцию с S3.

0 голосов
/ 18 января 2019

Решение № 1: Используйте CloudFront + Lambda @ Edge

CloudFront позволяет настроить несколько режимов кэширования, перенаправляя различные шаблоны путей к соответствующим источникам:

Единственное ограничение заключается в том, что каждая корзина S3 должна знать путь и обеспечивать в нем одинаковую файловую структуру. В корзине для сайта A должна быть папка /site/a, в корзине B должна быть папка /site/b.

Можно преодолеть это ограничение, используя Lambda@Edge.

Решение №2. Настройка бинарных файловых типов в API-шлюзе

API Gateway позволяет настраивать бинарные типы файлов MIME. Но для этого требуется, чтобы заголовок Accept был совместим с настроенными типами mime.

Так, например, если вы сконфигурируете image/* как двоичный mimetype в APIG, ваши запросы изображений должны иметь заголовок Accept со значением image/png, image/jpg или просто image/*. Если заголовок отсутствует или имеет другое значение, APIG не будет обрабатывать ответ как двоичный файл.

Проблема в том, что браузеры обычно отправляют Accept: */* при попытке загрузить ресурсы, импортированные из CSS.

Таким образом, единственным решением для этого было бы настроить */* как двоичный mimetype. Это нарушит все недвоичные ответы, обслуживаемые этим шлюзом API, например JSON.

Решение № 3: Размещать двоичные файлы отдельно

Это комбинация двух предыдущих подходов. Вы можете просто создать отдельный статический хостинг веб-сайтов и поместить туда свои двоичные файлы.

0 голосов
/ 16 января 2019

Вы можете создать поддомен (a и b) и использовать на своем сайте

  1. my-portal.com
  2. a.my-portal.com
  3. b.my-portal.com

Если вы размещали свой домен за пределами Amazon, вы можете использовать маршрут 53 или адрес fwd в CNAME.

Пожалуйста, прочитайте следующие ссылки для подробностей

...