我们的 Discourse 图片未启用灯箱效果

日志文件中显示了一个错误,提示无法访问 /uploads/....

无法访问 '/uploads/default/original/1X/fe2af548af4a22f4802ddaa54afa557ae557417c.png' 以获取其尺寸。

如果我在浏览器中直接输入该 URL,可以正常访问图片:
https://domain.com/uploads/default/original/1X/fe2af548af4a22f4802ddaa54afa557ae557417c.png

Completed 200 OK in 23ms (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 3000)
Completed 200 OK in 318ms (Views: 1.2ms | ActiveRecord: 0.0ms | Allocations: 50347)
无法访问 '/uploads/default/original/1X/fe2af548af4a22f4802ddaa54afa557ae557417c.png' 以获取其尺寸。
Started GET "/posts/96" for 84.115.50.36 at 2020-07-04 14:15:14 +0000
Processing by PostsController#show as JSON
  Parameters: {"id"=>"96"}

如果不强制使用 HTTPS,则不会显示错误。

Completed 200 OK in 18ms (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 3050)
Completed 200 OK in 296ms (Views: 0.5ms | ActiveRecord: 0.0ms | Allocations: 49562)
Started GET "/posts/97" for 84.115.50.36 at 2020-07-04 14:17:43 +0000
Processing by PostsController#show as JSON
  Parameters: {"id"=>"97"}

看起来 Discourse 出于某种原因再次从 Web 服务器下载了图片,以便进行灯箱(lightbox)处理。
如果我在 Discourse Docker 容器内手动下载该图片,它会尝试通过内部 IP 地址直接访问 Web 服务器,而不是通过代理。这种方式可以通过 HTTP 访问,但无法通过 HTTPS 访问。

Web 服务器本身仅提供 HTTP 访问,但 Discourse 尝试通过 HTTPS 访问,导致失败。

我不明白为什么 Discourse 要再次从 Web 服务器下载图片,而不是在内部直接访问(无需 HTTP/HTTPS)。

编辑: 我发现,我将 app.yml 重命名为 domain.name.yml,这导致 Docker 将 domain.name 的 DNS 名称更改为其内部 IP 地址。我将其改回 domain_name.yml 后,一切恢复正常。