将站点移至代理后,favicon 和 header 不再使用 https

感谢您的回复。我之前的消息确实表述不清。实际上,我可以通过 Rails 命令成功修改 force_https 设置,这没有问题。所以,为了更清楚地说明:

在我几天前执行的上一次升级(需要重建 Docker 容器)之前,我拥有一个完全正常的解决方案:将 force_https 设置为 true,并在 nginx 配置文件的 server 部分应用以下补丁,即可实现正常登录:

  if ($http_x_forwarded_proto = 'http'){
    return 301 https://$host$request_uri;
  }

该方案当时运行正常。然而,升级之后,同样的补丁已无法让我再次登录,系统返回了众所周知的“未知错误”(Unknown error)。

我从生产日志中获得了以下追踪信息:

 Started POST "/session" for 193.134.222.4 at 2020-05-14 19:24:40 +0000
 Processing by SessionController#create as */*
 Parameters: {"login"=>"rossierd", "password"=>"[FILTERED]", "second_factor_method"=>"1", "timezone"=>"Europe/Zurich"}
 Can't verify CSRF token authenticity.
 Rendering text template
 Rendered text template (Duration: 0.0ms | Allocations: 1)
 Filter chain halted as :verify_authenticity_token rendered or redirected
 Completed 403 Forbidden in 2ms (Views: 0.7ms | ActiveRecord: 0.0ms | Allocations: 1101)

需要说明的是,我们的 Discourse 容器运行在一台可通过 HTTPS 访问的虚拟机中。

您是否对升级前后行为变化的原因有任何想法?

目前,我已将 force_https 设置为 false,系统运行基本正常,只是左上角的标志(品牌 Logo)无法正确显示,因为它仍通过 http:// 请求引用。

顺便一提,我们网站的 URL 是:https://discourse.heig-vd.ch