将 Discourse 与 Cloudflare 结合使用: 最佳实践

为什么使用 Discourse 与 Cloudflare

将 Discourse 与 Cloudflare 一起使用可以带来以下几个好处:

  • 性能:Cloudflare 的 CDN 可以加速全球访问您 Discourse 论坛上的常见资源,从而改善无论用户位于何处的社区成员的使用体验(来源)。
  • 安全性:Cloudflare 为您的 Discourse 论坛提供额外的安全层,例如 DDoS 防护(来源)和 HTTPS 支持(来源),如果没有使用 Discourse 的 Lets Encrypt 配置

对于自托管用户来说,重要的是要注意,虽然 Cloudflare 可以提供这些好处,但它也增加了 Discourse 设置的复杂性。本文件旨在帮助您应对这种复杂性,并充分利用 Discourse 与 Cloudflare 的结合。

配置 Discourse 与 Cloudflare

  • Cloudflare 基础知识:在开始配置 Discourse 与 Cloudflare 时,首先确保您熟悉 Cloudflare 基础知识。Cloudflare 基础知识 是一个集中提供 Cloudflare 资源的地方。
  • 设置:为了获得 Cloudflare 的 安全性、性能和可靠性 的好处,您需要在您的域名上配置 Cloudflare。设置指南

最佳实践

以下链接假设您已登录并且只有一个账户。

  • DNS:确保指向您 Discourse 实例的 DNS 记录被代理。点击这里管理您的 DNS 记录
  • SSL/TLS 加密模式应设置为“完全(严格)”。点击这里管理您的 SSL/TLS 设置:warning: 如果未正确设置,可能会导致重定向循环。
  • 缓存级别 应设置为标准。点击这里设置缓存级别
  • 创建页面规则:为 community.example.com/session/* 创建页面规则,将缓存级别设置为“绕过”。点击这里创建页面规则
  • 规则设置 应配置为规范化传入的 URL。点击这里配置规则设置
  • 网络设置:根据 Cloudflare 的计划类型,应配置如下。如果尚未启用,请启用 IPv6 兼容性WebSocketsIP 地理位置网络错误日志洋葱路由。如果尚未禁用,请禁用 伪 IPv4响应缓冲真实客户端 IP 头gRPC。根据您的站点政策设置 最大上传大小,100 MB 足够。点击这里配置网络设置
  • WAF 设置:根据 Cloudflare 计划类型和安全需求配置。 如果您的 Cloudflare 账户支持托管规则,请配置托管规则以“跳过发布创建/编辑的 WAF”。操作步骤如下:
    • 添加一个托管规则,匹配 URI 路径和请求方法。该规则应如下所示:
(http.request.uri.path eq "/posts(/[0-9]+)?" and http.request.method in {"POST" "PUT"})
  • 选择“跳过所有剩余规则”选项。
  • 启用“记录匹配请求”。如果您使用 数据探索器 插件,请配置托管规则以“跳过管理员查询的 WAF”。操作步骤如下:
  • 添加一个托管规则,匹配 URI 路径和请求方法。该规则应如下所示:
(http.request.uri.path contains "/admin/plugins/explorer/queries/" and http.request.method eq "PUT")

自托管用户的额外配置

为了确保正确的 IP 地址发送到 Discourse,您需要在 containers/app.yml 文件的末尾添加以下行:

cloudflare.template.yml

(相关:如何设置 Cloudflare? - #6 由 codinghorror

支持

如需来自 Cloudflare 的直接支持,请访问原始帖子 @ Cloudflare Community

或者,您可以在 Meta 上搜索特定问题:‘cloudflare’ 搜索结果 - Discourse Meta

2 Likes