Аналіз
Згідно з документально підтвердженою поведінкою запитів і відповідей та підтримуваними кодами статусу HTTP для користувацького походження , Amazon CloudFront не слід переспрямовувати , на жаль:
[...] Після налаштування переадресації перший раз, коли кінцевий користувач подає запит на об’єкт, CloudFront Front надсилає запит на походження, а походження відповідає перенаправленням (наприклад, 302 Moved тимчасово переміщено). CloudFront кешує переспрямування та повертає його кінцевому користувачеві. CloudFront не слідкує за переадресацією. [акцент мій]
Звичайно, ви використовуєте Amazon S3, а не спеціальне походження, і пов'язаний розділ, зокрема, відсутній у поведінці запитів та відповідей для джерел Amazon S3 , але дані перенаправлення Amazon S3 додані лише нещодавно (див. Amazon S3 - Підтримка веб-сайту Переспрямовування ), можливо, це ще просто відсутнє.
Відповідно, я маю на увазі, що ви не отримуєте порожній файл з кодом статусу HTTP 200 ОК , скоріше HTTP-статус 301, переміщений постійно без тіла - чи ви перевіряли це за допомогою браузера чи зрештою лише інструментом командного рядка, наприклад наприклад, CURL або HTTPie ? Останні інструменти зазвичай вимагають явного параметра, щоб слідкувати за переадресаціями, тому це може бути легко непоміченим.
Потенційне рішення
Якщо аналіз виявиться правильним, вам потрібно буде налаштувати переадресацію так, щоб явно націлити CloudFront, знову побачити Переспрямовування :
Ви можете налаштувати веб-сервер для переадресації запитів на одне з наступних місць:
Нова URL-адреса об'єкта на початковому сервері. Коли кінцевий користувач слідує за переадресацією на нову URL-адресу, кінцевий користувач обходить CloudFront і переходить прямо до початкового коду. Як результат, ми рекомендуємо не перенаправляти запити на нову URL-адресу об'єкта на джерело.
Нова CloudFront URL для об’єкта. Коли кінцевий користувач подає запит, який містить нову URL-адресу CloudFront, CloudFront отримує об'єкт з нового місця розташування у вашому походження, кешує його в крайовому місці та повертає об'єкт кінцевому користувачеві. Подальші запити на об’єкт будуть обслуговуватися крайовим розташуванням. Це дозволяє уникнути затримки та навантаження, пов’язаної з тим, що глядачі вимагають від об'єкта джерела. Однак кожен новий запит на об’єкт стягуватиме плату за два запити до CloudFront.