Использование шаблона CloudFlare

Несколько часов назад я настроил Cloudflare в качестве CDN (серый значок облака) для своего сайта на Discourse (example.com). После этого я наткнулся на следующее:

Соответственно, я добавил (последняя строка):

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Раскомментируйте эти две строки, если хотите добавить Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/cloudflare.template.yml"

Мой вопрос: было ли это необходимо, если Cloudflare используется только как CDN для Discourse? Или я неправильно понял инструкцию? Я не хочу добавлять шаблоны, если это излишне.

Коротко: Cloudflare — это не типичная CDN.

Серое облако означает, что Cloudflare предоставляет только DNS-сервис для этого адреса.

Если включить оранжевое облако, внешний мир будет видеть изменённый IP-адрес, а весь трафик будет проксироваться через сеть Cloudflare. Это позволяет как «защищать» сервер, так и кэшировать ресурсы, такие как изображения и JavaScript.

Шаблон необходим, потому что, когда Cloudflare размещается между вашим сайтом и внешним миром, ваш сервер будет видеть только IP-адреса Cloudflare как источники подключений. Используя шаблон, ваш сайт снова увидит IP-адреса клиентов, которые Cloudflare передаёт в заголовке CF-Connecting-IP.

Без правильной настройки вы столкнётесь с ошибками ограничения подключений и проблемами, связанными с IP-адресами регистрации, так как весь пользовательский трафик будет казаться исходящим из нескольких адресов.

Если вы решите включить CDN Cloudflare (оранжевое облако), вам нужно сделать ещё один шаг — создать правило страницы для адреса вашего экземпляра Discourse. В правиле необходимо выбрать «Отключить производительность», что выключит функции Cloudflare, которые, как известно, мешают работе Discourse.

Обратите внимание: если вы используете Cloudflare как фронтенд для вашего сайта, а не S3-бакет, то между вашим сервером и клиентами в интернете добавляются дополнительные сетевые переходы. Помните, что Discourse — это не просто веб-сайт, а JavaScript-приложение. После загрузки Discourse в браузере при клике на ссылки страницы больше не загружаются. Добавление дополнительных сетевых переходов создаст небольшую, но заметную задержку при каждом клике.

Если ваш сайт не находится под атакой, разумный способ использования Cloudflare — перенести ваши ресурсы в S3 (объектное хранилище, а не CDN), а затем использовать Cloudflare перед этим хранилищем S3. Таким образом, коммуникация с клиентами останется быстрой, трафик на загрузку ресурсов снизится, и, что самое главное, вы освободите локальное хранилище на вашем сервере Discourse.

Не могу поверить, что я уже год веду свой сайт, не настроив Cloudflare как следует. Удивительно, что я не заметил никаких ошибок. Спасибо за информацию!

Спасибо, @Stephen. Это было невероятно информативно. Мой главный вывод заключается в том, что Cloudflare, вероятно, не был правильным выбором для меня, учитывая, что традиционные CDN менее disruptive — несмотря на отсутствие защиты от DDoS-атак.