返信ありがとうございます。私のメッセージが不明確でした。実際、rails コマンドを使って force_https を変更するのは問題ありませんでした。より明確にするために申し上げますと、
数日前に docker コンテナの再構築が必要だった最後のアップグレードを行うまで、force_https を true に設定し、nginx 設定ファイルの server セクションに以下のパッチを適用することで、有効なログインが可能な完全な動作環境を構築していました。
if ($http_x_forwarded_proto = 'http'){
return 301 https://$host$request_uri;
}
これは機能していました。しかし、アップグレード以降、同じパッチを適用してもログインできず、よく知られた「Unknown error」が表示されるようになりました。
production ログから以下のトレースを取得しました。
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 コンテナは VM 上で動作しており、https を介してアクセス可能です。
アップグレード前後でこの挙動が変化した原因について、何かご存知でしょうか?
現時点では、force_https を false に無効化しましたが、左上のロゴ(ブランドロゴ)が http:// リクエストで参照されているため正しく表示されないという問題を除き、すべて正常に動作しています。
余談ですが、当サイトの URL は https://discourse.heig-vd.ch です。