Хочется зафиксировать для себя все шаги и настройки, которые нужно будет сделать, что бы получить работоспособный вариант статического сайта на основе Yandex.Cloud S3, который по сути является аналогом AWS S3.
Настройки на стороне Yandex.Cloud S3
Тут буду действовать через web интерфейс. Создаем бакет.
Тут главное 2 момента:
- название бакета должно совпадать с доменом, который будет ссылаться на этот бакет через Cloudflare;
- доступ для чтения объектов должен быть публичным.
Если задать имя бакета произвольным, то для доступа к нему нужно будет указывать заголовок host
. Через настройки сайта
нельзя указать произвольные домены, вся работа с бакетом будет происходить через сгенерированный яндексом домен.
Получить доступ к нему без замены заголовка host
можно учитывая подстановку: {bucket-name}.website.yandexcloud.net
это домен {bucket-name}
в Cloudflare. Например:
Bucket | Домен в Cloudflare | Домен в Yandex.Cloud |
---|---|---|
domain.tld | domain.tld | domain.tld.website.yandexcloud.net |
www.domain.tld | www.domain.tld | www.domain.tld.website.yandexcloud.net |
some-name | some-name | some-name.website.yandexcloud.net |
Как видно из таблицы без дополнительных подмен заголовокв в Cloudflare в третьем варианте получить доступ к сайту не
получится. Возможно конечно поменять
заголовок host
по инструкции. Но
нужно учитывать что эта возможность работает ТОЛЬКО в Enterprise версии:
Customers can rewrite
Host
headers using different Cloudflare rules. This feature is currently available for domains on the Enterprise plan.
Если же хочется получить все с минимальными (а лучше вообще без 🤑) затратами, то стоит это учитывать. После этого на странице настроек “Веб-сайт” нужно указать параметры и сохранить настройку:
В настройках нет ничего сложного:
Главная страница
- путь до главной страницы сайта;Страница ошибки
- путь до страницы, которая будет отдаваться на все 4xx ошибки;Ссылка
- домен, который нужно будет указать в настройках проксирования Cloudflare.
Остальные параметры не принципиальны и их можно не трогать.
Настройки на стороне Cloudflare
На стороне CLoudflare тоже все буду делать все через web интерфейс. Тут все еще проще, нужно только добавить CNAME
запись к основному домену (или поддомену, в зависимости от имени бакета, если нет желания менять настройки
заголовка host
).
При этом, если CNAME
создается для корневого домена (знак @
в поле имени), то Cloudflare покажет предупреждение, что
для домена включается CNAME flattening.
Проверка работы
Практически сразу можно будет проверить, что все работает как нужно, в том числе кеши:
В том числе картинки (попадающие в кеш самого Cloudflare):