Использование AWS CloudFront для обслуживания HTTPS в корзинах AWS S3, но НЕКОТОРЫЕ изображения застревают в цикле перенаправления

Вчера я настроил Certs и CloudFront, чтобы перевести свои сайты с http на https. http автоматически перенаправляет на https. Дистрибутивы CloudFront указывают на сегменты S3. Все работает; за исключением того, что некоторые файлы застревают в цикле перенаправления. Я предположил, что это CF немного медленный, поэтому оставил его на ночь. 12 часов спустя... та же проблема.

Примеры:

https://www.humantruth.info/1.jpg -> Цикл перенаправления. (20 редиректов, затем браузер сдается)

https://www.humantruth.info/bus_seats.jpg -> Грузится нормально.

В корзине S3 у них обоих есть «Стандартный» класс хранения (что бы это ни значило), и нет никаких признаков каких-либо специальных настроек, которые есть только у одного из них, но не у другого.

Я пробовал разные браузеры на разных устройствах на работе и дома и получил одинаковые результаты. Я меняю настройки AWS только раз в несколько лет, у меня очень простая настройка, и я никогда не пытался применить конкретную переадресацию или настройки к отдельным изображениям; Я уверен, что настройки для обоих одинаковы.

(Q1) Какие /виды/ вещей мне следует делать, чтобы найти недостатки? Я следовал руководствам AWS о том, «как включить https», и оставил все настройки по умолчанию (как указано в руководстве), за исключением нескольких основных (например, установка источников в дистрибутивах).

(Q2) Это проблема с кэшированием? Когда я обновляю элементы корзины S3, содержимое действующего сайта не обновляется даже через 3 часа. Обычно оно обновляется в течение минуты. Поэтому мне нужно сказать CF, чтобы он обновлялся чаще. Возможно, это тоже неясная причина проблемы с перенаправлением.

Глядя на https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/understanding-how-origin-request-policies-and-cache-policies-work-together.html, у меня возникает соблазн обновите этот параметр:

CloudFront distribution > Edit Behaviour > Cache key and origin requests

По умолчанию:

Cache policy and origin request policy (recommended)

К:

Legacy cache settings > None (for Headers, Query Strings and Cookies).

Я вообще не использую файлы cookie и не делаю никаких особых запросов; весь сайт представляет собой статические страницы .html, статические .js, статические .css и статические изображения.

(Q3) Что происходит? У меня очень-очень простая настройка, и подобные сложности заставляют меня думать, что мне следует отказаться от всей концепции https и оставить ее http. Что-то принципиально не так с CF и/или отсутствует в руководствах по установке?


55
1

Ответ:

Решено

Починил это. Решение:

After setting up CloudFront, do an Invalidate on /* files.

Корзины Amazon S3 УЖЕ должны незаметно использовать CloudFront по умолчанию. Когда я создавал свои собственные дистрибутивы CloudFront, НЕКОТОРЫЕ файлы уже были предварительно кэшированы, когда они существовали только по http. Итак, когда я реализовал пересылку http > https, несмотря ни на что, НЕКОТОРЫЕ файлы все еще перенаправлялись теперь неверными предварительными кэшами CloudFronts старых версий http.

Поэтому, что бы я ни делал, они никогда не работали (в частности, для нескольких файлов), и не имело значения, какие у меня были настройки. Решением в CloudFront было принудительное признание всех файлов недействительными с использованием шаблона «все», /*.

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

AWS действительно следует включить в свои руководства по настройке для перевода сайтов S3 с http на https, что этот дополнительный шаг необходим для предотвращения этой ошибки.