Использование Discourse с Cloudflare
В этом руководстве объясняется, как настроить и использовать Discourse с Cloudflare, включая лучшие практики безопасности и советы по устранению неполадок.
Требуемый уровень пользователя: Администратор
Для самостоятельной установки требуется доступ к консоли
Краткое содержание
Cloudflare может улучшить ваш экземпляр Discourse, обеспечив повышенную производительность благодаря CDN, дополнительные уровни защиты, такие как защита от DDoS-атак, и поддержку HTTPS. Это руководство охватывает процесс настройки и лучшие практики для оптимальной конфигурации.
Зачем использовать Cloudflare с Discourse
Использование Cloudflare с вашим экземпляром Discourse дает несколько ключевых преимуществ:
- Производительность: CDN Cloudflare может улучшить глобальный доступ к общим ресурсам, улучшая пользовательский опыт по всему миру (источник)
- Безопасность: Дополнительные уровни защиты, включая:
- Защиту от DDoS-атак (источник)
- Поддержку HTTPS (источник) (альтернатива настройке Let’s Encrypt в Discourse)
Для самостоятельных установок, хотя Cloudflare предлагает эти преимущества, он добавляет сложности в вашу настройку.
Настройка Cloudflare
- Ознакомьтесь с основами Cloudflare
- Следуйте инструкциям по настройке, чтобы настроить Cloudflare для вашего домена и получить преимущества в области безопасности, производительности и надежности
Лучшие практики конфигурации
Настройки DNS
- Убедитесь, что записи DNS, указывающие на ваш экземпляр Discourse, проксируются
- Доступ к настройкам DNS осуществляется по адресу
dash.cloudflare.com/?to=/:account/:zone/dns
Конфигурация SSL/TLS
- Установите режим шифрования в значение “Full (strict)”
- Доступ к настройкам SSL/TLS осуществляется по адресу
dash.cloudflare.com/?to=/:account/:zone/ssl-tls
Неправильная конфигурация SSL/TLS может вызвать циклы перенаправления
Настройки кэширования
- Установите уровень кэширования в значение “Standard”
- Доступ к настройкам кэширования осуществляется по адресу
dash.cloudflare.com/?to=/:account/:zone/caching/configuration
Правила кэширования
Cloudflare устарел Page Rules в пользу своей современной системы Rules. Создайте следующие правила, используя Cache Rules по адресу dash.cloudflare.com/?to=/:account/:zone/rules:
- Установите уровень кэширования в значение “Bypass” для
community.example.com/session/* - Настройте параметры нормализации URL для нормализации входящих URL-адресов
Настройки сети
Настройки сети по адресу dash.cloudflare.com/?to=/:account/:zone/network обычно не влияют на функциональность Discourse. Discourse не использует WebSockets, gRPC или заголовки CF-IPCountry / True-Client-IP. Эти настройки можно оставить по умолчанию, если другое программное обеспечение на том же домене не требует специальной конфигурации.
Настройки WAF (брандмауэр веб-приложений)
Если ваш тарифный план Cloudflare поддерживает управляемые правила, создайте следующие:
- Пропустить WAF при создании/редактировании постов:
(starts_with(http.request.uri.path, "/posts") and http.request.method in {"POST" "PUT"})
- Для пользователей плагина Data Explorer пропустите WAF при административных запросах:
((http.request.uri.path contains "/admin/plugins/explorer/queries/" or http.request.uri.path contains "/admin/plugins/discourse-data-explorer/queries/") and http.request.method eq "PUT")
Для обоих правил:
- Выберите “Skip all remaining rules”
- Включите “Log matching requests”
Если у вас тарифный план Business или выше, вы можете использовать оператор регулярных выражений
matchesдля более точного сопоставления. Операторыstarts_withиcontains, использованные выше, работают во всех тарифных планах, включая Free и Pro.
Доступ к настройкам WAF осуществляется по адресу dash.cloudflare.com/?to=/:account/:zone/firewall/managed-rules
Оптимизация контента
Настройте следующее по адресу dash.cloudflare.com/?to=/:account/:zone/speed/optimization:
- Включите Brotli
- Отключите Rocket Loader™
Discourse часто получает отчеты о неработоспособности сайта из-за включенного Rocket Loader™
Дополнительная конфигурация для самостоятельных установок
Чтобы обеспечить правильную пересылку IP-адресов, добавьте следующее в раздел шаблонов в вашем файле containers/app.yml:
- "templates/cloudflare.template.yml"
После добавления шаблона необходимо пересобрать контейнер с помощью команды
./launcher rebuild app, чтобы изменения вступили в силу.
Связанное: Как настроить Cloudflare?
Ресурсы поддержки
Устранение неполадок
Проблемы с политикой безопасности контента (CSP)
Если вы столкнулись с ошибками CSP:
- Убедитесь, что Rocket Loader отключен
- Проверьте, что скрипты правильно добавлены в настройку сайта
content security policy script src
Функциональность OneBox
Если OneBox блокируется:
- Проверьте, включен ли режим борьбы с ботами Super Bot Fight Mode
- Отрегулируйте настройку “Definitely automated”, если она установлена в “Managed” или “Block”
- Рассмотрите возможность создания пользовательского правила WAF для пользовательского агента OneBox



