浏览器 Cookie 损坏(?)在 Azure 上迁移站点后发生

您好,

我已将 Discourse 平台从 Vultur 主机迁移至 Azure,运行在 CentOS Linux 环境中。迁移过程顺利,使用了内置的数据库备份和恢复流程。随后我们完成了 DNS 的委托。

部分用户(包括我自己,也曾遇到过)在加载 /latest.json 时会出现令人沮丧的 500 错误。在所有情况下,清除浏览器 Cookie 或会话后问题会暂时解决,但大约半小时后问题似乎又会重现。

此外,作为管理员,我在错误发生时发现“设置”部分中各种设置标签的键值对未能正确解析为语言区域。例如,“默认语言区域”显示为类似 “[en.default_locale]” 的内容。

我并非 Linux 或 Discourse 专家,因此不确定该如何处理此问题。这可能是 DNS 迁移后系统正在“稳定下来”所致,但也可能存在其他更深层次的问题。

目前为止,该问题仅在 Windows 上的 Chrome 浏览器中被报告。我在 Edge 或 Chrome Android 上无法复现该问题。

查看 /logs 日志时,我看到了如下类似的条目:

Job exception: PG::InvalidTextRepresentation: ERROR:  invalid input syntax for type inet:"106.70.36.109:6082" LINE 1: UPDATE "users" SET "ip_address" = '106.70.36.109:6082' WHERE...

如有任何建议,不胜感激。

Simon

这是一个众所周知的 Azure 错误,此处介绍了一些变通方法:

是 Chromium Edge 还是旧版 Edge?

我们也得出了同样的结论,实际情况确实如此。Appgw 发送的是其内部 IP 地址,而非用户 IP 地址,这很可能触发了 Nginx 的洪水防护机制。更新 Nginx 配置后,问题得以解决。