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

AWS: перенаправить один субдомен на другой (http и https)

Во время производственного запуска мне нужен один поддомен, beta.foo.bar.com, чтобы начать перенаправлять все запросы на foo.bar.com.

AWS предлагает использовать корзину S3, настроенную для статического хостинга веб-сайтов и настроенную для перенаправления всех запросов в другой домен. Это отлично работает для http, но время ожидания запросов https к beta.foo.bar.com истекает, поскольку S3 не может обрабатывать https.

Обе записи DNS являются псевдонимами для дистрибутивов CloudFront, которые, в свою очередь, имеют собственные записи CNAME, которые в конечном итоге указывают на ELB. Это было создано кем-то, кого сейчас нет, и, признаюсь, я еще недостаточно знаю о дистрибутивах / источниках CloudFront. Есть ли какая-то возможная комбинация распространения / происхождения / CNAME CloudFront, которая может обрабатывать http, https, и перенаправление?

Примечание. Само приложение может получать http, но переписывается на https с расширением ebextension; там возможно перенаправление, но я бы предпочел разрешить его на AWS.

Мне не нравится использовать слишком много причудливых уловок AWS, поэтому я бы просто установил ALB (и сделал бы HTTPS), а затем установил экземпляры EC2 в ASG с крошечной статической конфигурацией nginx, которая перенаправлялась на другой домен. Преимущество этого подхода заключается в том, что он практически без изменений применяется к любому другому облачному провайдеру, поскольку в следующем году будет определено что-то еще, что станет новой проблемой.

Однако, если вы полны решимости перейти на полностью AWS, IIRC предпочтительным подходом для SSL-in-front-of-S3 является использование SSL с помощью CloudFront, который указывает на корзину S3, которая затем предположительно выполнит перенаправление . Я никогда не пробовал, так что, возможно, CloudFront съест перенаправление или сделает что-то еще бесполезное, но, вероятно, стоит попробовать.

Спасибо всем за помощь. Оказывается, это очень просто. Все, что мне нужно было сделать, - это добавить в дистрибутив CloudFront beta.foo сегмент перенаправления S3 в качестве источника, а затем отредактировать поведение по умолчанию, чтобы использовать этот источник вместо конечной точки ELB. Не нужно менять DNS или даже принудительно использовать http-> https в CloudFront. Перенаправление вступило в силу немедленно даже во время повторного развертывания CloudFront.

Это очень просто реализовать.

  1. Для CloudFront убедитесь, что в используемом сертификате SSL указаны оба доменных имени. Если нет, создайте его заново и подключите к обоим дистрибутивам CloudFront.
  2. Подождите, пока CloudFront переконфигурируется.
  3. Повторите проверку, что оба домена по-прежнему работают правильно.
  4. В Route 53 (или у вашего поставщика DNS) измените запись ALIAS для beta.foo.bar.com, чтобы она указывала на раздачу CloudFront для foo.bar.com

DNS потребуется время, чтобы мир обновил свои записи (многие DNS-серверы не соблюдают TTL, если он установлен коротким), поэтому планируйте заранее.

Протестируйте из другой системы, которая никогда не использовала ни одно из ваших доменных имен, и убедитесь, что все работает, пока DNS обновляется во всем мире.