Я пытаюсь сделать что-то, что должно быть относительно простым - я хочу настроить несколько доменов и поддоменов для перенаправления в основной домен для нашего сайта, но я хочу разместить перенаправления в Cloudfront. Все работает, кроме перенаправления корневого пути - это дает мне файл XML, частично описывающий корзину S3.
Фон
S3
S3 позволяет вам настроить контейнер для перенаправления , например:
Тестируя это, веб-конечная точка (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 - я только что включил и выключил корневой корневой объект по умолчанию для тестирования.
И конфигурация Origin для этого дистрибутива:
источник
GET /
до того, как вы исправили свою конфигурацию для использования конечной точки сети.Ответы:
Если у вас есть эта проблема, проверьте сначала при настройке источника сегмента s3 для облачного фронта, автозаполнение возвращает конечную точку REST s3 domain.amazonaws.com, которая возвращает этот ответ ListBucketResult.
Вы должны записать вручную конечную точку домена domain.s3-website-region.amazonaws.com
Важное замечание : Если у вас неправильно настроен облачный фронт с конечной точкой REST, вы должны аннулировать кэш с помощью Invalidations, или он будет продолжать возвращать ответ REST
источник
origin
блоке распределения, использованияaws_s3_bucket.BUCKET.website_endpoint
вdomain_name
(неbucket_regional_name
) и добавитьcustom_origin_config
блок.Решение: Настройте Redirect, как указано в вопросе, затем дождитесь времени кеширования S3 и CloudFront. Они могут быть 4 часа и более, поэтому вам просто нужно все это настроить, а затем ждать и надеяться на лучшее.
(Это решение Майкла из Комментариев, но прошло уже много лет, и это действительно заслуживает того, чтобы его отметили как Отвечено).
источник
Запись в качестве ответа, поскольку я не могу комментировать - из документации по адресу http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/DistributionConfigDatatype.html#DistributionConfigDatatype_Elements кажется, что у вас может быть пустой корневой объект по умолчанию:
источник