Настройка переадресации URL на основе DNS в Amazon Route53

Я пытаюсь настроить переадресацию в Amazon Route53. Моя последняя служба DNS (Nettica) позволяла мне перенаправлять запросы на "aws.example.com" на "https://myaccount.signin.aws.amazon.com/console/".

Поддерживается ли эта функциональность Route53?

Как Nettica достигает этого? Вставляет ли он специальные записи A, CNAME, PTR или TXT?

5 ответов

Решение

Я столкнулся с той же самой проблемой, которую описал Саурав, но мне действительно нужно было найти решение, которое не требовало бы ничего, кроме Маршрута 53 и S3. Я создал руководство для моего блога с подробным описанием того, что я сделал.

Вот что я придумал.


Задача

Используя только инструменты, доступные в Amazon S3 и Amazon Route 53, создайте перенаправление URL, которое автоматически перенаправляет http://url-redirect-example.vivekmchawla.com/ на страницу входа в консоль AWS с именем "MyAccount", расположенную по адресу https://myaccount.signin.aws.amazon.com/console/.

Это руководство научит вас настраивать переадресацию URL на любой URL, а не только на Amazon. Вы узнаете, как настроить пересылку в определенные папки (например, "/console" в моем примере) и как изменить протокол перенаправления с HTTP на HTTPS (или наоборот).


Шаг первый: создайте свой S3 Bucket

Откройте консоль управления S3 и нажмите 'Создать корзину'

Откройте консоль управления S3 и нажмите "Создать корзину".


Шаг второй: назовите свой S3 Bucket

Назовите свое S3 Bucket

  1. Выберите название корзины. Этот шаг действительно важен! Вы должны назвать контейнер точно таким же, как URL, который вы хотите настроить для пересылки. Для этого руководства я буду использовать имя "url-redirect-example.vivekmchawla.com".

  2. Выберите регион, который вам больше подходит. Если вы не знаете, оставьте значение по умолчанию.

  3. Не беспокойтесь о настройке регистрации. Просто нажмите кнопку "Создать", когда вы будете готовы.


Шаг 3. Включите статический хостинг веб-сайтов и укажите правила маршрутизации.

Включить статический хостинг веб-сайтов и указать правила маршрутизации

  1. В окне свойств откройте настройки "Статический хостинг сайтов".
  2. Выберите опцию "Включить хостинг сайтов".
  3. Введите значение для "Индекс документа". Этот объект (документ) никогда не будет обслуживаться S3, и вам никогда не придется загружать его. Просто используйте любое имя, которое вы хотите.
  4. Откройте настройки для "Изменить правила перенаправления".
  5. Вставьте следующий фрагмент XML полностью.

    <RoutingRules>
      <RoutingRule>
        <Redirect>
          <Protocol>https</Protocol>
          <HostName>myaccount.signin.aws.amazon.com</HostName>
          <ReplaceKeyPrefixWith>console/</ReplaceKeyPrefixWith>
          <HttpRedirectCode>301</HttpRedirectCode>
        </Redirect>
      </RoutingRule>
    </RoutingRules>
    

Если вам интересно, что делает приведенный выше XML, посетите документацию AWM для "Синтаксис для указания правил маршрутизации". Бонусная техника (не описанная здесь) - это перенаправление на определенные страницы на хосте назначения, например http://redirect-destination.com/console/special-page.html, Читайте о <ReplaceKeyWith> элемент, если вам нужна эта функциональность.


Шаг 4. Запишите "конечную точку" вашего Bucket Redirect

Запишите конечную точку вашего Redirect Bucket

Запишите "конечную точку" статического хостинга, которую Amazon автоматически создал для этого сегмента. Это понадобится вам на потом, поэтому выделите весь URL, затем скопируйте и вставьте его в блокнот.

ВНИМАНИЕ! На данный момент вы можете нажать эту ссылку, чтобы проверить, правильно ли были введены ваши правила перенаправления, но будьте осторожны! Вот почему...

Допустим, вы ввели неверное значение внутри <Hostname> теги в ваших правилах перенаправления. Может быть, вы случайно набрали myaccount.amazon.com, вместо myaccount.signin.aws.amazon.com, Если вы нажмете ссылку для проверки URL-адреса конечной точки, AWS с радостью перенаправит ваш браузер на неправильный адрес!

Заметив свою ошибку, вы, вероятно, отредактируете <Hostname> в ваших Правилах перенаправления, чтобы исправить ошибку. К сожалению, когда вы попытаетесь щелкнуть ссылку снова, вы, скорее всего, будете перенаправлены обратно не по адресу! Даже если вы исправили <Hostname> Ваш браузер кэширует предыдущую (неправильную!) запись. Это происходит потому, что мы используем перенаправление HTTP 301 (постоянное), которое браузеры, такие как Chrome и Firefox, будут кэшировать по умолчанию.

Если вы скопируете и вставите URL-адрес конечной точки в другой браузер (или очистите кеш в текущем), у вас будет еще один шанс увидеть, обновился ли ваш <Hostname> запись, наконец, правильная.

На всякий случай, если вы хотите проверить URL-адрес конечной точки и правила перенаправления, вам следует открыть сеанс частного просмотра, например "Режим инкогнито" в Chrome. Скопируйте, вставьте и протестируйте URL-адрес конечной точки в режиме инкогнито, и все, что кэшируется, исчезнет после закрытия сеанса.


Шаг 5: Откройте консоль управления Route53 и перейдите к наборам записей для вашей размещенной зоны (доменное имя)

Откройте консоль управления Route 53, чтобы добавить наборы записей в размещенную зону

  1. Выберите размещенную зону (доменное имя), которую вы использовали при создании корзины. Так как я назвал свое ведро "url-redirect-example.vivekmchawla.com", я собираюсь выбрать зону размещения vivekmchawla.com.
  2. Нажмите на кнопку "Перейти к наборам записей".

Шаг 6: Нажмите кнопку "Создать набор записей"

Нажмите кнопку 'Создать набор записей'.

Нажатие "Создать набор записей" откроет окно "Создать набор записей" с правой стороны консоли управления Route53.


Шаг 7. Создайте набор записей CNAME

Создать набор записей CNAME

  1. В поле "Имя" введите часть имени хоста URL-адреса, который вы использовали при именовании своего сегмента S3. "Часть имени хоста" в URL - это все, что осталось от имени вашей размещенной зоны. Я назвал свой сегмент S3 "url-redirect-example.vivekmchawla.com", а моя размещенная зона - "vivekmchawla.com", поэтому часть имени хоста, которую мне нужно ввести, - "url-redirect-example".

  2. Выберите "CNAME - Каноническое имя" для Типа этого набора записей.

  3. В качестве значения вставьте URL-адрес конечной точки корзины S3, которую мы создали еще на шаге 3.

  4. Нажмите кнопку "Создать набор записей". Предполагая, что ошибок нет, вы сможете увидеть новую запись CNAME в списке наборов записей вашей размещенной зоны.


Шаг 8. Протестируйте новое перенаправление URL

Откройте новую вкладку браузера и введите URL, который мы только что настроили. Для меня это http://url-redirect-example.vivekmchawla.com/. Если все работает правильно, вас следует отправить прямо на страницу входа в AWS.

Потому что мы использовали myaccount.signin.aws.amazon.com Псевдоним как целевой URL нашего перенаправления, Amazon точно знает, к какой учетной записи мы пытаемся получить доступ, и ведет нас прямо туда. Это может быть очень удобно, если вы хотите дать сотрудникам или подрядчикам короткую, чистую, фирменную ссылку для входа в AWS.

Все сделано! Переадресация URL должна привести вас на страницу входа в AWS


Выводы

Мне лично нравятся различные сервисы AWS, но если вы решили перенести управление DNS на Amazon Route 53, отсутствие простой переадресации URL может разочаровать. Я надеюсь, что это руководство помогло немного упростить настройку переадресации URL для ваших хостинговых зон.

Если вы хотите узнать больше, просмотрите следующие страницы сайта документации AWS.

Ура!

Поддержка AWS указала на более простое решение. Это в основном та же идея, предложенная @Vivek M. Chawla, с более простой реализацией.

AWS S3:

  1. Создайте Bucket с именем вашего полного домена, например aws.example.com
  2. В свойствах корзины выберите Redirect all requests to another host name и введите свой URL:https://myaccount.signin.aws.amazon.com/console/

AWS Route53:

  1. Создайте набор записей типа A. Измените Псевдоним на Yes, Нажмите на Alias Target выберите поле S3, созданное на предыдущем шаге.

Ссылка: Как перенаправить домены с помощью Amazon Web Services

Официальная документация AWS: есть ли способ перенаправить домен в другой домен с помощью Amazon Route 53?

Мне удалось использовать nginx для обработки перенаправления 301 на страницу входа в aws.

Перейдите в папку nginx conf (в моем случае это /etc/nginx/sites-available в котором я создаю символическую ссылку на /etc/nginx/sites-enabled для включенных конф файлов).

Затем добавьте путь перенаправления

server {
  listen 80;
  server_name aws.example.com;
  return 301 https://myaccount.signin.aws.amazon.com/console;
}

Если вы используете nginx, у вас, скорее всего, будут дополнительные серверные блоки (виртуальные хосты в терминологии apache) для обработки апекса вашей зоны (example.com) или любой другой настройки. Убедитесь, что один из них установлен в качестве сервера по умолчанию.

server {
  listen 80 default_server;
  server_name example.com;
  # rest of config ...
}

На маршруте 53 добавьте A record за aws.example.com и установите значение на тот же IP-адрес, который используется для апекса вашей зоны.

Обновить

Хотя мой первоначальный ответ, приведенный ниже, все еще действителен и может быть полезен для понимания причины, по которой перенаправление URL-адресов на основе DNS недоступно из Amazon Route 53 из коробки, я настоятельно рекомендую проверить совершенно умное косвенное решение Vivek M. Chawla, представленное в то же время Поддержка Amazon S3 для веб-сайтов Перенаправляет и позволяет меньше получать автономный сервер и, следовательно, бесплатное решение в рамках AWS.

  • Внедрение автоматизированного решения для создания таких перенаправлений оставлено читателю в качестве упражнения, но, пожалуйста, отдайте дань эпическому ответу Vivek, опубликовав свое решение;)

Оригинальный ответ

Для этого Nettica должна использовать специальное решение для перенаправления, вот проблема:

Вы можете создать псевдоним CNAME, например aws.example.com за myaccount.signin.aws.amazon.comоднако DNS не предоставляет официальной поддержки для создания псевдонимов подкаталогов, таких как console в этом примере.

  • Жаль, что AWS, кажется, просто не делает это по умолчанию при нажатии https://myaccount.signin.aws.amazon.com/ (Я только что попробовал), потому что это решило бы вашу проблему сразу и имело бы большой смысл в первую очередь; кроме того, это должно быть довольно легко настроить на их конце.

По этой причине некоторые провайдеры DNS, по-видимому, внедрили собственное решение, позволяющее перенаправлять в подкаталоги; Рискну предположить, что они в основном упрощают создание псевдонима CNAME для своего собственного домена и снова перенаправляют оттуда в конечный пункт назначения с помощью немедленного перенаправления HTTP 3xx.

Таким образом, для достижения того же результата вам понадобится HTTP-служба, выполняющая эти перенаправления, что, конечно, не является простым решением, на которое можно надеяться. Возможно / Надеюсь, кто-то еще может придумать более разумный подход.

Если у вас все еще есть проблемы с простым подходом, создайте пустое ведро, то Redirect all requests to another host name под статическим хостингом в свойствах через консоль. Убедитесь, что вы установили 2 A записи в route53, одна для final-destination.com и один для redirect-to.final-destination.com, Настройки для каждого из них будут идентичны, но имя будет отличаться, поэтому оно совпадает с именами, которые вы задали для своих групп / URL-адресов.

Другие вопросы по тегам