Использование Discourse с Cloudflare: лучшие практики

Надеюсь, это окажется полезным, но я также написал общее руководство по лучшим настройкам здесь:

Сотрудник Cloudflare также добавил несколько советов и исправлений в разделе комментариев.

Я обновляю это руководство и пытался узнать, есть ли какие-либо новые рекомендации от Discourse, и наткнулся на эту страницу.

Я добавлю эти правила в свои управляемые правила. Спасибо!

Вот обзор моих пользовательских правил. Это действительно помогло сократить спам, и часто (но не всегда) трафик самого низкого качества поступает через VPN и трафик дата-центров, с чем эти правила успешно справляются:

Я подготовлю подробную статью с полным содержимым правил. Я работаю с ними уже около 6 месяцев и подтверждаю их эффективность, используя инструмент Log Explorer и проверяя по 10 000 событий за раз.

2 лайка

Я пытаюсь разобраться в интеграции с Cloudflare, используя бесплатную версию, прежде чем применять её на новом сайте Discourse. Не мог бы кто-нибудь подробно объяснить эти моменты с конкретными примерами? Предположим, что адрес сайта Discourse: «discourse.abc123.com».

(1) Похоже, Cloudflare удаляет заголовки безопасности origin nginx, которые у меня сейчас установлены?

(2) Я не понимаю следующие комментарии: «Если вы решите включить CDN CloudFlare (оранжевое облако), вам нужно сделать ещё один шаг и создать правило страницы для адреса вашего экземпляра Discourse. Это правило должно „отключить производительность

Использую Cloudflare в режиме прокси перед моим форумом Discourse с лета 2025 года без каких-либо проблем; в наши дни не требуется выполнять множество специфичных для Discourse действий, чтобы всё работало корректно.

Один из самых важных пунктов — убедиться, что в вашем файле app.yml включён шаблон Cloudflare. Без этого в панели управления Discourse вы будете видеть только IP-адреса серверов Cloudflare, а не реальные IP-адреса посетителей.

Правило «Обойти кэширование для /session/*» по-прежнему необходимо (в новом интерфейсе настройте его как правило кэширования), а правило «Пропустить WAF при создании/редактировании сообщений» точно остаётся актуальным (я использую его как управляемое правило).

Поскольку я в основном использую Discourse как систему комментариев для сайта на WordPress, я настроил WordPress добавлять TTL 60 секунд к AJAX-ответам по адресу /wp-json/wp-discourse/v1/discourse-comments?post_id=xxxx, которые веб-сервер отправляет, когда посетители запрашивают ветку комментариев к определённому посту WP; это помогает справляться с всплесками трафика. Я добавил правило кэширования CF, которое учитывает TTL для URI, содержащих /wp-json/wp-discourse/. (Я не могу установить достаточно короткий TTL для этих URL через Cloudflare без Enterprise-аккаунта, поэтому устанавливаю TTL на уровне приложения с помощью mu-плагина, а затем указываю CF учитывать этот TTL через правило кэширования CF.)

Помимо этого и базовых настроек, упомянутых в первом сообщении темы, делать практически нечего — Cloudflare работает с Discourse очень даже хорошо.

5 лайков

Привет! Я только что настроил это и потратил на это 20 минут.

Я также использую бесплатный план Cloudflare, и некоторые настройки действительно изменились. Если вы воспользуетесь строкой поиска на панели управления Cloudflare, она покажет новое место для этих настроек. У меня тоже были сложности с поиском некоторых из них.

Требуется пересборка

2 лайка

Я только включил Жёлтое Облако, ничего не делал. Когда будет время, тоже попробую настроить и посмотреть, как это работает.

Завершил статью о настройке Discourse + Cloudflare WAF, о которой упоминал ранее:

В ней описан полный набор пользовательских правил, которые я использую на своём форуме Discourse: правила пропуска для статических ресурсов и /message-bus, правила блокировки для сканеров, проверки ASN и географических ограничений, ограничение скорости (rate limiting), настроенное специально для Discourse, а также исключения для управляемых правил.

Также нашёл пункт, требующий уточнения в описании выражений для создания/редактирования постов в официальном руководстве: оператор регулярных выражений matches требует тарифный план Business. Поэтому в статье я использовал альтернативу starts_with, которая работает на тарифах Pro.

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

3 лайка

Я хотел бы уточнить. В чем разница между таким способом настройки и включением только «Желтого облака» при сохранении всех остальных параметров по умолчанию? Спасибо.

1 лайк

Хороший вопрос. При использовании только настроек по умолчанию с оранжевым облаком вы получаете DNS, CDN, защиту от DDoS-атак и бесплатный управляемый набор правил. Это надежная базовая конфигурация, и Discourse будет отлично работать только с ней.

Причина, по которой многие идут дальше, часто связана со спамом, но также с потерей пропускной способности и ресурсов сервера, а также с общей скоростью загрузки и производительностью страниц.

Что касается спама, мы получали от 5 до 10 спам-сообщений в неделю, и иногда это было настолько непрекращающимся, что я активно искал решения на этих форумах.

После внедрения этих пользовательских правил количество спама снизилось примерно до 2–3 сообщений в месяц. Основная оставшаяся проблема — это один или два тролля и провокатора, которые продолжают регистрироваться под новыми аккаунтами после того, как их разоблачают. Но это уже другая тема! Сочетание блокировки трафика из дата-центров и через VPN, а также трафика Tor и из проблемных стран дало огромный эффект.

Помимо спама, есть вопрос использования ресурсов хостинга. Понимание того, на что именно расходуются ресурсы вашего хостинга, имеет большое значение. Также это полезно для интернета в целом — не кормить автоматизированный трафик и ботов.

Начните с надежного и быстрого хостинга в хорошей сети — это самое важное. Затем Cloudflare поверх этого обеспечивает быстрый опыт даже для пользователей, находящихся далеко от вашего сервера. Кэширующий слой помогает даже при настройках по умолчанию, но выход за рамки этих настроек продолжает улучшать как производительность, так и безопасность.

По умолчанию Cloudflare поставляется с настройками, которые можно безопасно включить без побочных эффектов. Однако есть множество дополнительных настроек, которые также безопасны для включения, но по умолчанию не активированы. А пользовательские правила должны быть именно пользовательскими, потому что Cloudflare не предлагает никаких мастеров, где вы выбираете «Я запускаю Discourse» или «Я запускаю WordPress», и система автоматически создает для вас правила. Это была бы отличная функция, и я планирую предложить её на следующем звонке с их командой.

Так что всё зависит от того, чего вы хотите. Если настройки по умолчанию работают, а спам не является проблемой, возможно, вам это не нужно.

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

2 лайка

Я полагаю, что следовал рекомендациям (использую бесплатный тариф Cloudflare), но пока столкнулся с двумя проблемами:

(1) Главный экран входа пуст при первом обращении. Если кликнуть по ссылке и снова нажать Enter, он появляется.

(2) Встроенные PDF-файлы не отображаются, хотя их можно скачать. Я пытался обойти расширение файлов PDF в правиле кэширования, но это не помогло.

Приостановка работы Cloudflare не помогает. Обе проблемы отсутствуют, если я использую Cloudflare только для DNS (серый статус).

Есть ли у кого-нибудь идеи, как лучше отладить или исправить эти две проблемы?

Заранее спасибо.