Поддомен подстановочного знака (* .example.com) с Amazon Route53 DNS и S3

12

Я размещаю статический веб-сайт, используя Amazon Route53 для DNS и S3 для html-файлов. Работает нормально.

Текущая настройка:

example.com.  A   ALIAS s3-website-us-east-1.amazonaws.com. 
www.example.com. CNAME www.example.com.s3-website-us-east-1.amazonaws.com

(ПРИМЕЧАНИЕ. Example.com и www.example.com являются сегментами S3. Мои HTML-файлы находятся в сегменте example.com.)

Теперь я хочу добавить субдомен подстановочных знаков, как это - это то, что я пытался:

*.example.com. CNAME  www.example.com.s3-website-us-east-1.amazonaws.com

Идея состоит в том, чтобы иметь что-нибудь .example.com для правильного разрешения на сайте. Но это, похоже, не работает. Поэтому, когда я захожу на сайт: joker.example.com, я вижу сообщение об ошибке в браузере:

Code: NoSuchBucket
Message: The specified bucket does not exist
BucketName: joker.example.com
Джаспер
источник

Ответы:

10

Ответ @ edvinas.me правильный. Вы должны создать облачный фронт-дистрибутив для своего сегмента.

При создании дистрибутива облачного фронта установите для альтернативного имени домена значение * .example.com.

Затем используйте URL-адрес облачного фронта, например d3lt3rsz2leycm.cloudfront.net.

Теперь вы можете добавить субдомен подстановочного знака следующим образом:

*.example.com. CNAME  3lt3rsz2leycm.cloudfront.net.    

И должно работать.

Хавьер Арнаис
источник
1

Amazon S3 использует имя хоста для определения имени сегмента.

- http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html

Имя хоста - это нижний регистр значения, отправляемого браузером в Host:заголовке. Там нет способа настроить ведро для ответа на несколько имен хостов.

Есть несколько обходных способов сделать это, в зависимости от того, что вы пытаетесь сделать, но для этого потребуется экземпляр EC2, на котором запущены HAProxy, Varnish, Apache или что-то подобное, чтобы либо отвечать на запросы подстановочных имен узлов с перенаправлением на переписать адресную строку браузера на реальное имя хоста / имя корзины или обработать заголовки запроса и прокси-запрос на S3, что не так неэффективно, как может показаться, так как между S3 и EC2 нет платы за передачу данных в пределах одного и того же регион, а латентность низкая.

Майкл - sqlbot
источник
1

Ваш S3 Bucket настроен на прием только запросов для example.com (и / или www.example.com). Вы не можете сконфигурировать ваше ведро для принятия или каких-либо определенных поддоменов, которые вы хотите быть активными.

Единственный способ добиться этого - использовать внешний сервис, такой как Cloudfront http://aws.amazon.com/cloudfront/, который бы передавал запросы через прокси.

Ответ Михаэля (sqlbot), кажется, охватывает это более подробно.

phoops
источник
3
Как это сделать - это сам вопрос.
Джаспер
Поскольку конфигурация не поддерживается, вам нужно использовать для этого внешний сервис.
Фоп