在 Discourse 中使用 Cloudflare 的最佳实践

顺便说一句,我认为整个网络设置对于 Discourse 来说都是不相关的:

  • IPv6 兼容性已无法禁用,当然 Discourse 也不依赖它,但完全可以在仅限 IPv4 的系统上运行。
  • IP 地理位置会将 CF-IPCountry 标头添加到请求中,但 Discourse 不会使用它。它使用自己的(可选)MaxMind 功能。
  • 网络错误日志记录会添加 Report-To 响应标头,浏览器可以使用它来报告错误。但是,它已被弃用,即使 Cloudflare 的所有套餐都可以启用该功能,但实际查看报告的仪表板元素仅在企业版套餐中可用。因此,在这种情况下,对于一些旧浏览器来说,这可能只是隐私退化和网络开销。
  • Onion Routing 增强了来自 Tor 网络的请求的隐私。Discourse 不会关心甚至不知道这一点。
  • 如果主机运行某些仅支持 IPv4 地址的软件(如旧版分析或类似软件),则可能需要伪 IPv4 功能。然后,可以调整 Cloudflare 的代理标头(如 Cf-Connecting-IP(或其他,取决于配置))以获得或多或少唯一的 IPv4 地址,而不是客户端的实际 IPv6 地址,以解决无法禁用客户端到 Cloudflare 请求的 IPv6 支持的问题。同样,Discourse 也不关心。我的意思是,这对于例如地理 IP 检测来说会是一个问题,但该功能默认是禁用的,并且管理员当然应该仅在他们运行的任何软件严格需要时才启用它,并接受非真实客户端 IP 的缺点。它也可以配置为仅添加一个带有伪 IPv4 地址的新标头,然后分析(或其他)请求可以在需要时重写客户端 IP 标头,而到 Discourse 的请求则不受影响。无论如何,对于 Discourse 的一般功能来说,该功能是无关紧要的。
  • True-Client-IP Header 除了 CF-Connecting-IPX-Forwarded-For 之外,还添加了这个标头。Discourse 不会使用它,Discourse 的配置模板也使用 CF-Connecting-IP 而不是它。所以它没有影响。
  • Discourse 不使用 gRPC,但启用 Cloudflare 来转发 gRPC 请求也没有坏处,与 WebSockets 相同。两者可能都需要为运行在同一 Cloudflare 域上的其他软件启用。
  • 最大上传大小 100 MB 是默认值和最小值。更大的上传大小需要商业版或企业版套餐,并且如果 Cloudflare 允许更大的上传,Discourse 不会中断。

唯一我不确定是否会产生影响的是响应缓冲。而且我无法测试,因为它是一个仅限企业版的独有功能。但我无法想象客户端会关心数据包是从 CF 边缘传入时流式传输的,还是在边缘完成时以一个块发送的。对于缓存的数据(我是指在 Cloudflare 缓存的数据),这总是会发生的,而且至少不会引起问题。此功能仅影响非缓存数据。

所以基本上,我会删除整个“网络设置”部分,因为它们与 Cloudflare 的功能无关,但其他软件可能需要某些设置,或者管理员可能希望它们以某种方式配置,并且应该知道 Discourse 在任何情况下都能正常运行。

1 个赞