Я пытаюсь разместить статический веб-сайт на S3 и Cloudfront, как и многие другие передо мной. У меня это в основном все настроено, и я создал сертификаты LetsEncrypt для моего голого домена (назовите его example.com) и www.example.com.Правила перенаправления S3 для исключения одной папки
У меня есть два ведра S3, называемые www.example.com и example.com, и два соответствующих распределения Cloudfront, которые просто указывают на их соответствующие ведра S3, а Route 53 настроен с двумя ALIAS A-records.
В примере.com S3 ведро содержит мой сайт, а ведро www.example.com настроено на перенаправление на https://example.com.
Это прекрасно работает. Однако досадно, что когда мне нужно обновить сертификаты LetsEncrypt для обоих доменов, мне нужно отключить перенаправление HTTP-HTTPS в Cloudfront, а затем отключить перенаправление для ведра www.example.com S3, чтобы . Известный вызов можно получить из CA LetsEncrypt. Это раздражает, так как это означает, что пользователи, попавшие на веб-сайт www, не будут перенаправлены в голый домен во время продления сертификата.
Я думал об определении правила перенаправления S3 на обоих ведрах, которые всегда будут перенаправляться на https://example.com, но исключают известную папку для LE CA. Таким образом, я мог позволить Cloudfront обслуживать как HTTP, так и HTTPS, обрабатывать перенаправление в S3, а обновление LetsEncrypt будет полностью прозрачным. Но это не представляется возможным выразить с помощью грамматики маршрутизации S3: https://docs.aws.amazon.com/AmazonS3/latest/dev/HowDoIWebsiteConfiguration.html
Невозможно выразить условие «если префикс ключа не равно» или какой-либо способ выразить «if условие не соответствует, ничего не делать ", поэтому любая попытка исключить папку, казалось бы, обязательно приведет к циклу перенаправления.
Может кто-нибудь сказать мне, что мне не хватает, или если это невозможно с S3? Кажется, слишком простая функция, которую нужно упустить!
Очень хорошо, я действительно не совсем понял условие HttpErrorCodeReturnedEquals, теперь это имеет смысл. Оно работает. На самом деле это не решает проблему HTTP, но я могу получить Letsencrypt, чтобы бросить вызов моему сайту через HTTPS до истечения срока действия сертификатов, поэтому мне нужно заплатить только цену за временное отключение перенаправления HTTPS, если я не смогу возобновить сертификаты вовремя, что достаточно для меня. Огромное спасибо! – Thomas
Извините, @ Томас, я должен был упомянуть ... вы тоже можете это исправить. Я обновил ответ. –
Ницца !! Благодаря!. – Thomas