Discourse インストールで force_https を有効にしました。HTTPS の終端は、その前に配置されているリバースプロキシが処理しています。force_https を有効にすると、Discourse の内部リンクのほとんどが https に切り替わりますが、既に存在する画像、特にファビコンやロゴのリンクは切り替わりません。そのため、https でサイトにアクセスすると、https ではない画像が含まれることで「混合コンテンツ」の警告が表示されます。
画像を再アップロードするか、rails コンソールから SiteIconManager.ensure_optimized! を実行することでリンクを https に変更できます。つまり、リンクはどこかでキャッシュされており、force_https が変更されても更新されていないようです。
force_https の切り替え時に、Discourse がアップロードされた画像(おそらくすべてのアップロード)のリンクを更新すべきです。あるいは、それらのリンクにスキームを含めないようにするのがより良いでしょうが、それが可能かどうかはわかりません。
「いいね!」 2
pfaffman
(Jay Pfaffman)
2
インストール方法は?Force_https はかなり前からデフォルトで有効になっています。
「いいね!」 3
discourse_docker リポジトリを使用して Docker イメージ(web_only と data に分割)をビルドし、HTTPS 終端を処理するプロキシの背後にある Kubernetes クラウドでそのイメージを実行しています。Discourse コンテナはポート 80 のみでリッスンしており、コンテナ設定ファイルでは SSL および Let’s Encrypt テンプレートを有効にしていません。どうやら、letsencrypt テンプレートが force_https を true に設定するもののようです。そのため、私の環境ではデフォルトでは有効化されていませんでした。
RGJ
(Richard - Communiteq)
4
完全にその通りではありません。プロビジョニング時に有効になりますが、デフォルトのサイト設定は false です。
また、この設定が「変更済み」として表示されるため、トラブルシューティング中にサイト設定を無効にする人も見かけます。
「いいね!」 2
riking
(Kane York)
5
あなたのプロキシが、以下の nginx 設定で指定されているすべての必要なヘッダーを送信していることを確認してください。
特に、X-Forwarded-Proto はデフォルトでは含まれないことがよくあります。
「いいね!」 3
RGJ
(Richard - Communiteq)
6
プロキシが X-Forwarded-Proto ヘッダーなどを送信していても、この問題は発生します。
force_https サイト設定を切り替えても、icon_manager のキャッシュがクリアされるまで、ロゴ URL のプロトコルは更新されません。icon manager の監視対象設定(watched settings)に force_https を追加するのが、おそらく最も簡単な解決策です。
「いいね!」 6
pfaffman
(Jay Pfaffman)
7
その通りです!標準的なインストールを行うと自動的に設定されるため、これが標準的なインストールではないと疑ったのです。
私が管理している GKE サイトでは、DISCOURSE_FORCE_HTTPS 環境変数で設定されており、期待通りに動作しています。ただし、設定したのはかなり前のことなので、何か見落としている可能性もあります。
「いいね!」 5
「Force HTTPS」設定を確認し、再度有効にしました。
これで私の環境では動作しました。
「いいね!」 1