这是我们的场景:
我们的 Discourse 运行在与主服务器分开的 EC2 实例上。Discourse 实例使用 Let’s Encrypt 通过内置机制创建自己的服务器证书。
主服务器使用其公共 DN 使用 Discourse 服务器的 API。
论坛是站点的一个子域,即“forum.[mydomain].com”。
这运行得很好。
现在我们已将整个站点置于 Cloudflare 之后。
如果通过浏览器访问,论坛本身运行得很好。
但是,如果主站点尝试使用 API 调用访问 Discourse 实例,现在会收到 403 错误。
我已经尝试了这里列出的所有步骤:将 Discourse 与 Cloudflare 结合使用:最佳实践 - 文档 / 自我托管 - Discourse Meta,包括为 forum.[mydomain].com/u/by-external/* 关闭浏览器完整性检查,但都没有效果。
Cloudflare 中的 SSL 设置为“Full”。未使用“Full (Strict)”,因为它也会导致站点宕机时的回退错误页面出现问题,所以我宁愿继续使用“Full”。
我不知道为什么 API 调用会因 403 而失败,也不知道如何解决该问题。目前,我已将 forum.[mydomain].com 的代理关闭作为一种解决方法,这确实解决了问题,但当然也意味着 Discourse 未被 Cloudflare 缓存或保护。
有什么想法可能出了问题吗?