从 2026.1 ESR 升级到 2026.7 的发现

谢谢。另外请注意,discourse-health-check v1.0.4 现已更新:

两项修复:

  1. Discourse 已用 Pitchfork 替换了 Unicorn(2026.2 版本中 Pitchfork 成为默认选项,2026.4 版本中完全移除了 Unicorn),因此现在的 Web 服务器检查可以同时检测两者。感谢 @RGJ 在六月份指出了这个问题。

  2. 服务探针曾匹配其自身的命令行。pgrep -f <name> 导致 pgrep 匹配到了自身,无论服务是否真正运行,检查都会通过。自 1.0.0 版本以来,Sidekiq 一直无条件报告“正在运行”。即使服务已停止,你仍会看到绿色的检查标记并收到 cron 返回的退出代码 0。这与 1.0.1 版本中 Puma 的误报根源相同,后者当时只是重命名而非真正修复。

此外,现在还会报告你的 PostgreSQL 主版本号,并标记低于 15 的版本。


如果你嵌入了 YouTube 视频,升级时还有一件事需要注意:

Discourse 默认发送 Referrer-Policy: same-origin,而 YouTube 会拒绝没有携带 referrer 的嵌入配置请求。你会遇到错误 153,视频将无法播放。我在十一月份也遇到了这个问题,并通过设置 Cloudflare Transform Rule 将 Referrer-Policy 设为 strict-origin-when-cross-origin 来解决:

我在写这篇文章时检查了更新日志。在 2026.1.5 到 2026.7.0 之间,没有任何涉及 Referrer-Policy 的提交,因此核心代码中此问题仍未修复。如果你已有变通方案,请在升级期间不要将其移除。

对于不使用 Cloudflare 的用户,可以在主题的 head 条目中添加以下内容来实现相同效果:
<meta name="referrer" content="strict-origin-when-cross-origin">

无法编辑该主题,因为它已关闭。所以应该是“设置为静态”而不是“添加”: