Я пытаюсь сделать что-то, что должно быть относительно простым - я хочу настроить несколько доменов и поддоменов для перенаправления в основной домен для нашего сайта, но я хочу разместить перенаправления в 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 /
до того, как вы исправили свою конфигурацию для использования конечной точки сети.