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

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

Я размещаю статический веб-сайт с использованием 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

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

Code: NoSuchBucket
Message: The specified bucket does not exist
BucketName: joker.example.com

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

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

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

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

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

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

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

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

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

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

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

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

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