Установка индексного документа на веб-сайте S3 с пользовательским доменом

Я пытаюсь установить индексный документ для моего веб-сайта, размещенного на S3. Я

  • Включенный хостинг веб-сайтов на ведре
  • Установите индексный документ в "index.html"
  • Загружен файл index.html
  • Создал файл index.html общедоступным.

Документ индекса работает при навигации к корню ведра с использованием исходного URL AWS, но не работает при использовании настраиваемого домена:

http://static.appgrinders.com.s3-website-us-east-1.amazonaws.com/index.html (работает)
http://static.appgrinders.com.s3-website-us-east-1.amazonaws.com (работает)
http://static.appgrinders.com/index.html (работает)
http://static.appgrinders.com (Ошибка доступа - 403)

Ответ 1

Ваш DNS настроен неправильно.

Вы указываете на одну из конечных точек REST (CNAME s3.amazonaws.com), которая не поддерживает индексные документы. Вам нужно, чтобы DNS указывал на конечную точку хостинга веб-сайта, в этом случае он CNAME static.appgrinders.com.s3-website-us-east-1.amazonaws.com. Эта конечная точка видна в консоли S3.

Это изменение решит вашу проблему.

http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html

Отказ от характера неправильной конфигурации (до того, как я подтвердил в DNS) был ошибкой XML. Конечные точки хостинга веб-сайтов не возвращают XML-ошибки - они возвращают одну и ту же информацию, но они завернуты в некоторый простой HTML, а не в XML.

Обратите внимание, что вам все равно придется использовать CloudFront, если вы хотите, чтобы ваш сайт был доступен с помощью SSL. Пользовательские домены в S3 требуют поддержки CloudFront для поддержки SSL. Конечные точки веб-сайта, в отличие от конечных точек REST, вообще не прослушивают порт 443.

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