Статический хостинг на Amazon S3 - конфигурация DNS


117

Я работаю над небольшим веб-приложением (все на стороне клиента). Я хочу разместить его на Amazon S3. Я нашел несколько руководств по этому поводу и сумел создать себе корзину (с тем же именем, что и мой домен), установить ее как веб-сайт и загрузить некоторый контент.

Где я борюсь, и где вся документация начинает немного расплываться, это как правильно настроить мой DNS.

Все, что мог предложить мой регистратор ( 123-reg ), это веб-пересылка, которая дает мне mydomain.com.s3.amazonaws.com

Что мне нужно настроить и где (например, 123-reg / Amazon) я могу получить чистый URL?


С тех пор, как был задан этот вопрос, все изменилось. Теперь можно разместить свой сайт на S # с корневым доменом, см проходных здесь: docs.aws.amazon.com/AmazonS3/latest/dev/...
Порс

Ответы:


248

Похоже, вы уже сделали большую часть работы. Для ясности я повторю эти шаги еще раз, чтобы убедиться, что вы правильно настроили:

  1. Создайте корзину s3, используя свое доменное имя в качестве имени корзины (имя корзины должно быть www.example.com, если вы хотите, чтобы ваш сайт был example.com или www.example.com)

  2. Загрузите свой контент в корзину s3. Выберите согласованное имя для файлов индекса вашего веб-сайта (обычно index.html). Вы также можете загрузить настраиваемую страницу для ошибок 404 Not Found. Назовите это 404.html. Дайте разрешение на чтение каждому файлу на вашем веб-сайте, чтобы его могли просматривать все. Не давайте никаких дополнительных разрешений ведру, только файлам внутри.

  3. Настройте ведро как веб-сайт. В консоли AWS ( https://console.aws.amazon.com/s3/ ) вы можете выбрать свой сегмент, щелкнуть свойства, а затем выбрать вкладку «Веб-сайт». Нажмите "Включено" и установите для индексного документа значение "index.html", а для документа об ошибке - "404.html". Вам также необходимо установить для своего сегмента права доступа, чтобы разрешить доступ через Интернет ( http://docs.amazonwebservices.com/AmazonS3/latest/dev/WebsiteAccessPermissionsReqd.html )

  4. Обратите внимание на URL-адрес «Конечная точка» на вкладке конфигурации веб-сайта. Здесь живет ваш сайт. Вы можете открыть ссылку в новом окне, и вы увидите свой веб-сайт именно таким, каким он будет. Щелкните вокруг и убедитесь, что все работает должным образом.

Вы ДОЛЖНЫ использовать адрес конечной точки на всех этапах ниже. Обычный www.example.com.s3.amazonaws.com не будет работать - вам нужно использовать региональную версию ( http://www.example.com.s3-website-us-east-1.amazonaws.com/ )

Теперь мы можем настроить DNS, чтобы предоставить вам чистый настраиваемый URL.

Сначала мы сопоставим www.example.com с вашим сайтом.

Используя инструменты вашего DNS-провайдера (123-reg в вашем случае), вам необходимо создать запись CNAME для сопоставления www.example.com с www.example.com.s3-website-us-east-1.amazonaws.com

CNAME - это единственное, что вам нужно, если вам просто нужен www.example.com. Большинство людей также хотят, чтобы example.com работал, поэтому нам нужен еще один шаг.

example.com часто называют «голым» доменом или верхней записью домена. Причина проблемы в том, что это не может быть CNAME. CNAME работают только с субдоменами, такими как www. Это затрудняет указание на s3.

Обычный подход заключается в использовании службы для автоматического перенаправления любого запроса, поступающего на example.com, на www.example.com. Затем будет получена ваша запись CNAME, и ваш сайт будет обслуживаться с s3.

Автоматическое перенаправление невозможно с обычным старым DNS, поэтому вам придется использовать другую службу. Некоторые поставщики DNS предлагают эту услугу вместе со своими DNS (godaddy делает, amazon route53 нет. Не уверен насчет 123-reg)

Если ваш DNS-провайдер этого не делает, есть несколько бесплатных услуг. Я использовал http://wwwizer.com/naked-domain-redirect - он не требует регистрации или оплаты.

Чтобы использовать этот тип службы, вам необходимо создать DNS-запись «A» для вашего голого домена. Для службы wwwizer.com вам потребуется создать запись A, чтобы указать example.com на 174.129.25.170. Вот и все!

Итак, при такой настройке, если пользователь вводит example.com в свой браузер, произойдет следующее:

  1. DNS-запрос: example.com -> 174.129.25.170 (сервис wwwizer.com)
  2. HTTP-запрос на 174.129.25.170 для example.com
  3. 174.129.25.170 перенаправляет example.com -> www.example.com
  4. DNS-запрос: www.example.com -> CNAME на www.example.com.s3-website-us-east-1.amazonaws.com
  5. DNS-запрос: www.example.com.s3-website-us-east-1.amazonaws.com -> указывает на Amazon S3
  6. HTTP-запрос для www.example.com теперь обслуживается Amazon S3

Наслаждайтесь!


2
Большое спасибо за ясность всего этого! Я внес изменения, просто жду, пока он вернется, скрестив пальцы, все будет работать.
Мерлин Мейсон

хммм, похоже, все еще не работает. Вот скриншот конфигурации DNS - cl.ly/CP6U Точка на конце кажется подозрительной, я не добавлял ее туда, и размещение этого URL-адреса в браузере с точкой на конце дает мне не обнаруженную ошибку. Я попытался удалить его, но он возвращается, как только я сохраняю, и я попытался заменить его на /, но затем я получил недопустимую ошибку. Как вы думаете, это может быть проблемой на исходе 123 рег?
Мерлин Мейсон

Привет, Мерлин, я попытался найти ваше доменное имя (wpfill.me), и я не вижу никаких записей на вашем снимке экрана. Есть ли у 123-reg отдельный шаг «опубликовать» или «зафиксировать»? Похоже, ваша конфигурация не вступила в силу.
secretmike

Хммм, я думаю, что должна быть проблема с 123-reg, я попытался сбросить записи DNS и ждал 48 часов, пока он распространится, но все равно без радости. Затем я переключил DNS-хостинг на Cloudflare и все это заработало за 20 минут :) Спасибо за вашу помощь, очень признательны!
Мерлин Мейсон


1

Я считаю, что вы должны выбрать все документы в своей корзине, щелкнуть правой кнопкой мыши и выбрать «Сделать общедоступным». Вы должны делать это каждый раз, когда в ведре что-то меняется. Затем я обычно щелкаю правой кнопкой мыши по сегменту, выбираю свойства, выбираю разрешения на правой панели, затем добавляю «Все как« получатель », а затем даю им только разрешения« список ». Остальная часть вашей статьи превосходна. Часть о голом домене помогла я решу свои проблемы. Вы также можете перенаправить голый домен на домен www в S3 в разделе «Статический хостинг веб-сайтов». Это, вероятно, самый простой способ. Еще раз спасибо за вашу помощь.

Тим


3
Этот шаг вручную не требуется, если вы применяете политику корзины, как описано выше.
tooluser 07

1

Обновление 2019

На сегодняшний день у меня работали следующие настройки DNS, чтобы статический веб-сайт AWS S3 работал:

Настройка DNS для сопоставления сегментов


0

На экране Advanced DNS на панели управления 123-reg

  • Я начал с нажатия кнопки «Сбросить DNS» к настройкам 123-reg по умолчанию.

Это дало мне следующее:

DNS EntryType       PriorityTTLDestination/Target
*                 A                                 81.xx.xx.xx              
@               A                                 81.xx.xx.xx              
@               MX          10               xx0.123-reg.co.uk
@               MX          20               xx1.123-reg.co.uk

  • Затем я добавил эту запись

www          CNAME                    www.example.com.s3-website-us-east-1.amazonaws.com

В их руководстве по управлению DNS в формате pdf говорится, что «@ record» относится к «вашему домену в чистом виде без поддомена», то есть к голому домену stackoverflow.com

Но в нем не упоминается, что такое «* запись», я предполагал, что она будет перехватывать все поддомены, и думал, что это может перебить запись CNAME, но, похоже, это не так.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.