为Discourse配置Cloudflare最佳设置

为论坛配置Cloudflare

:bookmark: 本指南说明了如何与CloudFlare配置和使用话语,包括安全性最佳实践和故障排除提示。

:person_raising_hand: 必需的用户级别:管理员

:information_source: 自托管安装需要控制台访问

概述

CloudFlare 可以通过 CDN,诸如 DDOS 保护和 HTTPS 支持的其他安全层改善性能,从而增强您的话语实例。本指南涵盖了设置过程和最佳配置的最佳实践。

为何将Cloudflare与Discourse结合使用

将 Cloudflare 与您的 Discourse 实例结合使用,可带来诸多显著优势:

  • 性能提升:Cloudflare 的 CDN 能够加速全球范围内对静态资源的访问,从而提升全球用户的访问体验(来源)。
  • 安全保障:提供多重防护措施,包括:

:warning: 对于自托管安装,尽管 Cloudflare 提供了这些优势,但也会增加配置的复杂性。

配置 Cloudflare

  1. 熟悉 Cloudflare 基础知识
  2. 按照 设置指南 为您的域名配置 Cloudflare,并享受 安全、性能和可靠性优势

配置最佳实践

DNS 设置

  • 确保指向您的 Discourse 实例的 DNS 记录已启用代理
  • 访问 DNS 设置页面:dash.cloudflare.com/?to=/:account/:zone/dns

SSL/TLS 配置

  • 将加密模式设置为 “完全(严格)”
  • 访问 SSL/TLS 设置页面:dash.cloudflare.com/?to=/:account/:zone/ssl-tls

:warning: 错误的 SSL/TLS 配置可能导致重定向循环

缓存配置

  • 将缓存级别设置为 “标准”
  • 访问缓存设置页面:dash.cloudflare.com/?to=/:account/:zone/caching/configuration

页面规则

dash.cloudflare.com/?to=/:account/:zone/rules 创建以下页面规则:

  • community.example.com/session/* 设置缓存级别为 “绕过”
  • 配置规则设置以规范化传入的 URL

网络设置

dash.cloudflare.com/?to=/:account/:zone/network 配置以下内容:

启用:

  • IPv6 兼容性
  • WebSockets
  • IP 地理位置
  • 网络错误日志记录
  • Onion 路由

禁用:

  • 伪 IPv4
  • 响应缓冲
  • True-Client-IP 标头
  • gRPC

根据站点策略设置最大上传大小(建议为 100 MB)

WAF(Web 应用防火墙)设置

若您的 Cloudflare 套餐支持托管规则,请创建以下规则:

  1. 在文章创建/编辑时跳过 WAF 检查:
(http.request.uri.path eq "/posts(/[0-9]+)?" and http.request.method in {"POST" "PUT"})
  1. 对于使用 Data Explorer 插件的用户,请跳过管理员查询的 WAF 检查:
(http.request.uri.path contains "/admin/plugins/explorer/queries/" and http.request.method eq "PUT")

对于以下两条规则:

  • 选择 “跳过所有剩余规则”
  • 启用 “记录匹配请求”

访问 WAF 设置页面:dash.cloudflare.com/?to=/:account/:zone/firewall/managed-rules

内容优化

请在 dash.cloudflare.com/?to=/:account/:zone/speed/optimization 中配置以下内容:

  • 启用 Brotli 压缩
  • 禁用 Rocket Loader
  • 禁用 自动压缩

:warning: 由于启用了 Rocket Loader,Discourse 经常收到网站宕机的bug: 详情请参阅

自托管安装的额外配置

为确保正确的IP地址转发,请将以下内容添加到您的 containers/app.yml 文件中的 template 部分:

cloudflare.template.yml

相关链接:如何设置Cloudflare?

支持资源

故障排除

内容安全策略(CSP)问题

若遇到 CSP 错误:

  • 确认 Rocket Loader 已禁用
  • 检查脚本是否正确添加到 content security policy script src 站点设置中

OneBox功能

若 OneBox 被阻止:

  • 检查是否启用了 Super Bot Fight Mode
  • “Definitely automated” 设置为 “Managed”“Block” ,请调整此设置
  • 考虑为 OneBox 用户代理创建自定义 WAF 规则

官方原帖链接: using-discourse-with-cloudflare-best-practices
最后更新时间: 2024-12-17T03:28:00Z
最后翻译时间: 2025-02-13T16:00:00Z
翻译使用的模型:DeepSeek-V3