Amazon Cloudfront с перенаправлением S3

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

Фон

S3

S3 позволяет Вам устанавливать блок все-перенаправления, как:

S3 with Redirect all requests setup

Тестируя это, веб-конечная точка (brass9-com.s3-website-us-west-1.amazonaws.com) делает то, что она должна - это перенаправлять на brass9.com. Хороший.

Cloudfront

Cloudfront позволяет Вам указать на блок S3, но способ, которым он предлагает Вас, делает так является неправильным - вместо того, чтобы указать на блок его именем, как brass9-com.s3.amazonaws.com, необходимо использовать веб-Конечную точку выше. Кроме этого можно оставить все в его значениях по умолчанию и получить хорошее поведение перенаправления. Так, путь как www.brass9.com/portfolio правильно перенаправляет туда, где он должен. Также хороший.

Проблема - корневое доменное перенаправление

Одна вещь, которой затем не удается работать, перенаправляет от плоскости www.brass9.com. Вместо того, чтобы получить Вас перенаправление это получает Вас этот нечетный результат:

<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>brass9-com</Name><Prefix></Prefix>
<Marker></Marker><MaxKeys>1000</MaxKeys><IsTruncated>false</IsTruncated>
</ListBucketResult>

Хорошо.... Таким образом, это не абсолютно неожиданно - потому что нет никакого Корневого объекта По умолчанию. Но какой Корневой объект По умолчанию я возможно указал бы для предотвращения этого поведения? Каково название объекта перенаправления S3, если таковые имеются, на который я должен указать? Или есть ли некоторая другая надлежащая конфигурация, или это - просто ошибка в том, как Cloudfront и S3 взаимодействуют, который должен зафиксировать Amazon?

Известное не работавшее решение: корневой объект по умолчанию

Возможно указать Корневой объект По умолчанию index.html, но это не помогает никому - это просто изменяет проблему. URL Cloudfront вместо этого перенаправляет к /index.html на основном сайте, который является 404 (мы не используем файл index.html, это - платформа серверной стороны управляемый сайт). Я мог поместить index.html на сервер, но это побеждает небольшой выигрыш в быстродействии использования Cloudfront во-первых.

Подобные вопросы

Один вопрос спрашивает что-то подобное, но возвращает пробел, 0-байтовый ответ по некоторым причинам вместо того, что я вижу, ответ XML. Это не включает вопрос о той проблеме или разрешении.

Похожие статьи

Одна статья предлагает, чтобы Вы просто раздали весь сайт и на пустом и на www домене. Это завинчивает с закладками любого пользователя, Вашим поисковым рейтингом, и т.д., и т.д. Вы не должны делать этого.

Несколько обсуждают хостинг статического веб-сайта на S3 и Cloudfront, а не схеме перенаправления, и не связаны - также.

Так, как я делаю это правильно?

Снимок экрана Конфигурации Cloudfront - никакой Корневой объект По умолчанию, указывающий на источник S3. Проигнорируйте InProgress - я только что переключил Корневой объект По умолчанию на и прочь протестировать.

Cloudfront Distribution with no Default Root Object pointing at S3

И Источник конфигурируется для того Распределения:

Origin - points to S3, defaults

8
задан 23 May 2017 в 15:41
3 ответа

Решение. Настройте переадресацию, как указано в вопросе, затем подождите, пока кешируется S3 и CloudFront. Они могут длиться 4 часа и более, поэтому вам просто нужно все это настроить, а затем ждать и надеяться на лучшее.

(Это решение Майкла из комментариев, но прошли годы, и это действительно заслуживает того, чтобы быть отмеченным как Ответил).

1
ответ дан 2 December 2019 в 23:05

Запись в качестве ответа, так как я не могу дать комментарий - из документации по адресу http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/DistributionConfigDatatype.html#DistributionConfigDatatype_Elements кажется, что вы можете иметь пустой корневой объект по умолчанию:

Если вы не хотите указывать корневой объект по умолчанию при создании a Распределение, включить пустой элемент DefaultRootObject.

0
ответ дан 2 December 2019 в 23:05

Если у вас возникла эта проблема, сначала проверьте, когда вы настраиваете источник корзины s3 для облачного интерфейса, автозаполнение возвращает конечную точку s3 REST domain.amazonaws.com, которая возвращает этот ответ ListBucketResult.

Вы необходимо записать вручную конечную точку веб-сайта domain.s3-website-region.amazonaws.com

Важно: Если вы неправильно настроили облачный интерфейс с конечной точкой REST, вам необходимо аннулировать кеш с помощью Недействительность, иначе он будет продолжать возвращать ответ REST

4
ответ дан 2 December 2019 в 23:05

Теги

Похожие вопросы