Поддержка HTTPS-перенаправления URL с помощью одного дистрибутива CloudFront
У меня есть доменformulagrid.com
.
Я использую AWS S3 для размещения его в качестве статического веб-сайта. Моя проблема заключалась в том, что я хотел перенаправить поддомен www в пустой домен следующим образом:
https://www.formulagrid.com -> https://formulagrid.com
http://www.formulagrid.com -> https://formulagrid.com
Amazon обеспечивает перенаправление URL-адресов из сегмента S3 в сегмент S3, если оба настроены для статического хостинга веб-сайтов.
Итак, что мне нужно было сделать, это настроить два ведра:
formulagrid.com
- актуальный сайтwww.formulagrid.com
- существует исключительно для перенаправления на фактический сайтЭто прекрасно работает, если вы работаете только по HTTP, но S3 абсолютно не поддерживает HTTPS.
Для подключения к статическому веб-сайту S3 можно использовать HTTPS, настроив дистрибутив CloudFront перед корзиной S3. Однако CloudFront, хотя он и обеспечивает HTTPS, в основном существует для функционирования в качестве CDN.
Изначально у меня была единая установка дистрибутива CloudFront перед корзиной S3, содержащей фактический сайт. Все казалось работоспособным: сайт был распределен по CDN, на нем был HTTPS, а HTTP перенаправлен на HTTPS.
Было одно исключение.
https://www.formulagrid.com
была полностью сломанная страницаПосле попытки найти источник ошибки некоторое время, я понял, что это потому, что он не проходил через CDN, и попытка получить доступ к S3 через HTTPS не работает.
В конце концов, мне пришлось предоставить еще один дистрибутив, чтобы сидеть передwww
S3 bucket, чтобы он был доступен через HTTPS. Вот тут-то и возникают мои опасения, потому что, как я упоминал ранее, главная цель CloudFront - быть CDN.
Для меня не имеет никакого смысла иметь CDN напротив URL, который просто перенаправляет на другой. Также возникает вопрос о том, будет ли мне взиматься двойная плата за каждый запрос, которыйwww
субдомен, потому что он попал в другой дистрибутив CloudFront после перенаправления.
Это разочаровывает, потому что я пытаюсь создать «серверную» архитектуру с использованием Lambda, и мне нужно подготовить экземпляр EC2 только для того, чтобы перезаписать URL, если это не мое последнее средство.
Решение будет тривиальным, если Amazon предложит какую-либо форму переписывания URL-адреса или если само CloudFront выполнит перенаправление, но, насколько я знаю, ни один из них не существует (дайте мне знать, если они это сделают).
Я новичок в AWS, поэтому я надеюсь, что кто-то с большим опытом может направить меня в правильном направлении.