在 Discourse 中使用 Cloudflare 的最佳实践

希望这对您有帮助,我还在这里写了一份关于最佳设置的通用指南:

一位 Cloudflare 员工也在评论区添加了一些提示和更正。

我正在更新该指南,并试图查看是否有来自 Discourse 的新建议,找到了这个页面。

我将把这些添加到我的托管规则中。谢谢!

这是我的自定义规则的概述。这确实有助于减少垃圾邮件,而且通常(并非总是)一些最低质量的流量是通过 VPN 和 DC 流量进入的,这些规则对此有所帮助:

我将对规则的完整内容进行正式的撰写,我已经运行这些规则大约 6 个月了,通过使用 Log Explorer 工具并一次检查 10k 个事件来验证它们的成功性。

2 个赞

我正试图在将 Cloudflare 用于新的 Discourse 站点之前,先了解其免费版本的集成。有人能详细说明这些并提供具体示例吗?假设 Discourse 站点是:‘discourse. abc123. com’

(1) Cloudflare 似乎会移除我目前拥有的源站 Nginx 安全标头?

(2) 我不明白这些评论:“如果你决定启用 CloudFlare CDN(橙色云),你需要再执行一个步骤,为你的 Discourse 实例的地址设置一个页面规则。该规则需要“禁用性能”(我没有看到该选项),这将关闭那些有充分记录会干扰 Discourse 的 CloudFlare 功能。”以及在 dash.cloudflare.com/?to=/:account/:zone/rules 创建以下页面规则:

  • community.example.com/session/* 设置缓存级别为“绕过”(Bypass)

  • 配置规则设置以规范化传入的 URL

还有我应该注意到的任何其他陷阱。

提前感谢。

自 2025 年夏季以来,我一直在 Discourse 论坛前使用 Cloudflare 的代理模式,一直没有遇到任何问题;如今,要使其正常工作,您真正需要针对 Discourse 进行的操作并不多。

最关键的项目之一是确保在 app.yml 文件中包含 cloudflare 模板。如果没有此设置,您的 Discourse 仪表板中只会看到 Cloudflare 服务器的 IP 地址,而不是实际访问者的 IP 地址。

“绕过对 /session/* 的缓存”规则似乎仍然是必需的(在新界面中将其作为缓存规则执行),而“在发帖/编辑时跳过 WAF”规则绝对是必需的(我将其设置为托管规则)。

由于我主要将 Discourse 用作 WordPress 网站的评论系统,我让 WordPress 对 /wp-json/wp-discourse/v1/discourse-comments?post_id=xxxx ajax 响应添加 60 秒的 TTL(当访问者请求特定 WP 帖子的评论线程时,网络服务器会发出这些响应);这有助于管理突发的访问者模式。我添加了一个 CF 缓存规则,该规则会尊重包含 /wp-json/wp-discourse/. 的 URI 的 TTL(没有企业帐户,我无法在 Cloudflare 上为这些 URL 设置足够短的 TTL,因此我通过 mu-plugin 在应用程序层设置 TTL,然后告诉 CF 通过 CF 缓存规则来遵守该 TTL。)

除此之外,以及帖子开头提到的基本设置,真的没有太多事情要做——Cloudflare 与 Discourse 的配合得非常好。

5 个赞

您好,我刚刚设置了它,20分钟就完成了。

我也使用了Cloudflare的免费套餐,实际上有些设置已经更改了。如果您使用Cloudflare仪表板中的搜索栏,它会弹出相应的新位置。我也曾在查找某些设置时遇到问题。

这需要重新构建

2 个赞

我只开启了小黄云,没有进行任何操作~等有时间我也配置一下看看效果。

完成了之前提到的 Discourse + Cloudflare WAF 的指南撰写:

涵盖了我论坛上使用的全套自定义规则栈:静态资源和 /message-bus 的跳过规则,针对扫描器、自治系统编号 (ASN) 和地理位置挑战的阻止规则,为 Discourse 调整的速率限制,以及托管规则的例外情况。

还在官方指南中的帖子创建/编辑表达式中发现了一些需要澄清的地方:正则表达式操作符 matches (正则表达式操作符 matches) 需要 Business 计划。因此,在文章中我使用了 starts_with 的替代方案,该方案在 Pro 计划上可用。

已在有真实流量的在线论坛上进行了测试。期待任何建议、改进或如果有人在使用配置时遇到任何问题。

2 个赞

我想了解一下。这种设置方式与只开启小黄云,其他都保持默认设置,有什么区别。谢谢

1 个赞

问得好。仅使用橙色云(orange cloud)的默认设置,你就能获得 DNS、CDN、DDoS 防护和免费的管理规则集。这是一个可靠的基础,仅此 Discourse 就能正常运行。

许多人进一步设置的原因通常是垃圾邮件(SPAM),但也包括带宽/服务器资源的浪费,以及整体页面速度/加载性能。

关于垃圾邮件,我们每周会收到 5 到 10 篇垃圾邮件帖子,有时其持续性强到我不得不主动在这些论坛中寻找解决方案。

部署这些自定义规则后,垃圾邮件量下降到每月可能只有 2 或 3 篇。剩下的主要问题是一两个巨魔和麻烦制造者,他们在被发现后只是不断注册新账户。但这又是另一个话题了!对数据中心和 VPN 流量、对 Tor 和有问题国家/地区的流量进行挑战,带来了巨大的不同。

除了垃圾邮件,还有托管资源方面的问题。确切地知道你的托管资源被用于什么非常重要。不为自动化流量/机器人提供资源,对整个互联网也有好处。

首先要有稳定、快速的托管服务和良好的网络,这是最重要的。然后在上面添加 Cloudflare,确保距离你的服务器较远的用户也能获得快速体验。缓存层即使使用默认设置也有帮助,但超越默认设置可以持续改善性能和安全性。

默认情况下,Cloudflare 附带的设置非常安全,可以启用而不会产生副作用。但是,还有许多额外的设置也可以安全启用,只是默认没有开启。而且自定义规则必须是自定义的,因为 Cloudflare 没有提供任何向导,让你选择“我正在运行 Discourse”或“我正在运行 WordPress”,然后它为你构建规则。这将是一个很棒的功能,我计划在下次与他们通话时提出这个建议。

所以这取决于你想要什么。如果默认设置有效且垃圾邮件不是问题,你可能不需要所有这些。

但在我看来,如果你想要对到达论坛的内容有更多的控制,并且想要从托管层一直到边缘榨取设置的每一分性能,那么自定义规则是值得付出的努力。

2 个赞