Хочется зафиксировать для себя все шаги и настройки, которые нужно будет сделать, что бы получить работоспособный вариант статического сайта на основе Yandex.Cloud S3, который по сути является аналогом AWS S3.

Настройки на стороне Yandex.Cloud S3

Тут буду действовать через web интерфейс. Создаем бакет.

new-bucket.png

Тут главное 2 момента:

  • название бакета должно совпадать с доменом, который будет ссылаться на этот бакет через Cloudflare;
  • доступ для чтения объектов должен быть публичным.

Если задать имя бакета произвольным, то для доступа к нему нужно будет указывать заголовок host. Через настройки сайта нельзя указать произвольные домены, вся работа с бакетом будет происходить через сгенерированный яндексом домен. Получить доступ к нему без замены заголовка host можно учитывая подстановку: {bucket-name}.website.yandexcloud.net это домен {bucket-name} в Cloudflare. Например:

BucketДомен в CloudflareДомен в Yandex.Cloud
domain.tlddomain.tlddomain.tld.website.yandexcloud.net
www.domain.tldwww.domain.tldwww.domain.tld.website.yandexcloud.net
some-namesome-namesome-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.

Если же хочется получить все с минимальными (а лучше вообще без 🤑) затратами, то стоит это учитывать. После этого на странице настроек “Веб-сайт” нужно указать параметры и сохранить настройку:

web-site-config.png

В настройках нет ничего сложного:

  • Главная страница - путь до главной страницы сайта;
  • Страница ошибки - путь до страницы, которая будет отдаваться на все 4xx ошибки;
  • Ссылка - домен, который нужно будет указать в настройках проксирования Cloudflare.

Остальные параметры не принципиальны и их можно не трогать.

Настройки на стороне Cloudflare

На стороне CLoudflare тоже все буду делать все через web интерфейс. Тут все еще проще, нужно только добавить CNAME запись к основному домену (или поддомену, в зависимости от имени бакета, если нет желания менять настройки заголовка host).

cloudflare.png

При этом, если CNAME создается для корневого домена (знак @ в поле имени), то Cloudflare покажет предупреждение, что для домена включается CNAME flattening.

Проверка работы

Практически сразу можно будет проверить, что все работает как нужно, в том числе кеши:

mainpage.png

В том числе картинки (попадающие в кеш самого Cloudflare):

pictures.png