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

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

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

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

Ответ 1

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

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


Цель

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

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


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

Open the S3 Management Console and click "Create Bucket"

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


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

Name your S3 Bucket

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

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

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


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

Enable Static Website Hosting and Specify Routing Rules

  • В окне свойств откройте настройки для "Статического хостинга веб-сайта".
  • Выберите вариант "Включить хостинг веб-сайтов".
  • Введите значение для "Index Document". Этот объект (документ) никогда не будет обслуживаться S3, и вам никогда не придется его загружать. Просто используйте любое имя, которое вы хотите.
  • Откройте настройки для "Изменить правила перенаправления".
  • Вставьте в него весь фрагмент 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: Запишите свой ковер перенаправления "Конечная точка"

Make a note of your Redirect Bucket's Endpoint

Обратите внимание на "конечную точку" статического веб-сайта, которую 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 и перейдите к наборам записей для вашей размещенной зоны (доменное имя)

Open the Route 53 Management Console to Add Record Sets to your Hosted Zone

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

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

Click the Create Record Set button

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


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

Create a CNAME Record Set

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

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

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

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


Шаг 8: проверьте новый URL-адрес перенаправления

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

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

All done! Your URL forwarding should take you to the AWS sign-in page.


Заключение

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

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

Ура!

Ответ 2

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

AWS S3:

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

AWS Route53:

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

Ссылка: Как перенаправить домены с помощью веб-служб Amazon

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

Ответ 3

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

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

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

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

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

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

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

Ответ 4

Update

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

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

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

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

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

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

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

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

Ответ 5

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

Ответ 6

Можно ли перенаправить сайт https? Как https://example.com на http (s)://newsite.com Заранее спасибо