为了提供上下文,我的 Discourse 测试站点运行在 Proxmox 容器中,位于同一网络(但不同子网)的另一台服务器上的 Nginx(npmplus)之后。这没什么特别的。我曾尝试启用 force-https,但不断遇到一堆 CSRF 验证错误,因此我再次将其禁用,因为不值得为此争执。无论上述情况如何,该站点在 HTTPS 上都能正常工作,因为 Nginx 和 Cloudflare 都已正确配置:
我刚才尝试在该站点上启用 DiscourseID,但遇到了错误:
有没有一种变通方法,不需要花费数小时与 npmplus 对抗来解决 Discourse CSRF 验证不断报错的问题?本线程并非用于调试 npmplus 或 SSL,我只想修复 Discourse ID。
错误消息“返回的 Discourse ID"指出,网站的 Redirect URI 必须为 https,因此您需要启用 force_https,或者通过代理配置表明请求是通过 https 传入的。
除了所有不正常的部分:
3 个赞
嗯,我猜我从未注意到这些。正如我所说,我尝试启用了 force_https,但在执行任何操作时一直收到 CSRF 错误。也许普通的 nginx 变量在 npmplus 上根本不起作用(根据上方说明所示),因为我当时使用的配置如下:
除此之外,我的 CT 上的 443 端口没有响应,因此它仍然通过 80 端口在本地连接。
Falco
(Falco)
4
您应该修复反向代理设置,并确保 HTTPS 正常运行。
1 个赞
我认为目前的问题只是 npmplus 暴露的变量有些异常。我之前有一个可用的配置,但弄丢了,现在不太确定该怎么办。我暂时采用了以下方案,但在 100% 确定它能正常工作之前,我不想启用该设置,以避免出现 BAD CSRF 错误,并再次前往 Rails 控制台进行修复。
有趣的是,它似乎只是拒绝通过 443 端口的流量,我认为这并不正常,尽管目前代理已设置为 80 端口。
无法解引用此指针——我想您说的是 Discourse 容器?
force_https 不会影响 Discourse 是否在 443 端口(HTTPS)提供服务;它仅告知 Discourse 应假设其始终通过 https 进行访问。
1 个赞