Налаштування переадресації URL-адрес на основі DNS в Amazon Route53 [закрито]


140

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

Чи підтримується ця функція Route53?

Як Nettica досягає цього? Чи вставляє він спеціальний запис A, CNAME, PTR або TXT?


Створення дистрибутива Cloudfront з URL-адресою як джерело також працює. Просто вкажіть домен на розподіл Cloudfront від Route53 і переконайтеся, що правильно налаштувати терміни TLS.
Дейвін

Відповіді:


325

Я зіткнувся з точно такою ж проблемою, яку описав Саурав, але мені справді потрібно було знайти рішення, яке не вимагало нічого, крім маршрутів 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

Відкрийте консоль управління S3 та натисніть "Створити відро"

Відкрийте консоль управління S3 та натисніть "Створити відро".


Крок другий: Назвіть своє відро для S3

Назвіть своє відро S3

  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: Зазначте "Кінцеву точку" відра для перенаправлення

Запишіть кінцеву точку відро для перенаправлення

Зверніть увагу на "кінцеву точку" статичного розміщення веб-сайтів, яку 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 Documentation.

Ура!


15
+1 за це надзвичайно розумне рішення - велике спасибі, що витратили час на складання такого епічного покрокового керівництва, я оновив свою відповідь, щоб відповідно віднести майбутніх читачів до ваших!
Steffen Opel

23
Примітка.: Для тих, хто хоче переспрямувати кореневий домен: example.org -> example.com - зробіть все те саме, за винятком використання запису з увімкненим "Псевдонімом: Так". Потім виберіть відро як ціль.
JaredBroad

10
Прекрасне рішення. Але я зіткнувся з проблемою використання https для вихідної URL-адреси. Якщо відро, на яке я перенаправляю, dev.example.com, то повторне пряме відтворення чудово підходить для http: // dev.example.com, але не вдається для https: // dev.example.com. Я не знайшов рішення для цієї проблеми.
Грег

4
@Greg Я думаю, що це може мати щось спільне з тим, як Amazon обробляє HTTPS для S3. На жаль, використовуючи CNAME для доступу до відра S3, ви не можете змусити SSL, додавши "https", оскільки Amazon не приймає сертифікат для "* .example.com". Оскільки S3 не дозволить з'єднання, ми ніколи не переходимо до логіки перенаправлення. На жаль, я не бачу вирішення цього питання.
Вівек М. Чаула

17
Існує нова опція "Перенаправити всі запити на інше ім'я хоста" під опціями "bucker". Я помістив туди URL-адресу входу IAM, і він працював як шарм, у XML немає потреби.
Дан Мілон

145

Підтримка AWS вказала на більш просте рішення. Це в основному та сама ідея, запропонована @Vivek M. Chawla, з більш простою реалізацією.

AWS S3:

  1. Створіть відро з іменем з повним доменом, наприклад aws.example.com
  2. У властивостях відра виберіть Redirect all requests to another host nameі введіть свою URL-адресу: https://myaccount.signin.aws.amazon.com/console/

AWS маршрут53:

  1. Створіть набір записів типу А. Змініть псевдонім на Yes. Клацніть на Alias Targetполі та виберіть відро для S3, яке ви створили на попередньому кроці.

Довідка: Як перенаправити домени за допомогою веб-служб Amazon

Офіційна документація AWS: Чи є спосіб перенаправити домен на інший домен за допомогою Amazon Route 53?


16
Це чудово підходить для HTTP, але не для HTTPS.
mythofechelon

@mythofechelon Що ти маєш на увазі? У мене досі не було проблем з https. Якщо ви хочете використовувати https з вашим доменом (наприклад: https: // aws.example.com), це зовсім інша проблема, тому що для цього вам знадобиться сервер з сертифікатом ssl.
Роберто Шнайдерс


2
Чи Redirect all requests to another host nameіснує ще така опція? Я не бачу його, коли переходжу до властивостей ковша.
помічник

1
Це має бути правильною відповіддю, його краще посилати на компоненти всередині AWS, використовуючи псевдоніми для цілей продуктивності замість CNAME (це працює, але це не найкращий підхід).
Дуглас Фігероа

11

Мені вдалося використовувати 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, ви, швидше за все, будете мати додаткові блоки сервера (віртуальні хости в термінології apache) для обробки вашої зони вершини (example.com), але якщо ви її встановите. Переконайтеся, що у вас один із них встановлений як ваш сервер за замовчуванням.

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

У маршруті 53 додайте A recordдля aws.example.comі встановіть значення для того самого IP, який використовується для вашої зони вершини.


Ще краще було б використовувати запис Alias, щоб вказати на пружний балансир навантаження перед цією машиною.
малетор

9

Оновлення

Хоча моя оригінальна відповідь нижче все ще справедлива і може бути корисною, щоб зрозуміти причину переадресації 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 .

Отже, щоб досягти того самого результату, вам потрібно мати службу HTTP, що виконує ці переадресації, що не є простим рішенням, на яке, звичайно, можна було б сподіватися. Можливо / Сподіваюся, хтось все-таки може придумати розумніший підхід.


3
CNAME - псевдоніми і не переспрямовують.
ejain

@ejain - ви, звичайно, правильні, я це виправив відповідно (напевно, пропустив сповіщення тоді); дякую за вказівку на цю потенційно оманливу фразу!
Steffen Opel

0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.