Discourse が SSL 終端を認識していない(混合コンテンツ)

サイトは https://forum.practical-pl.org にあります。

現在アクセスすると、ブラウザから「ミックスコンテンツ」の警告が表示されます。これは、Docker が Unix ドメインソケットでリッスンしており、NGINX フロントエンドがトラフィックをそこへリダイレクトしているためです。このリダイレクトには SSL 終端も含まれています(つまり、証明書はリバースプロキシにインストールされており、Discourse クライアント自体にはインストールされていません)。

その結果、Discourse が生成する絶対 URL は HTTPS ではなく HTTP になります。特に、サイトのアイコンや新規ユーザーに送信されるアクティベーションリンクがこれに含まれます。

Discourse に HTTPS リンクを生成させるにはどうすればよいでしょうか?

よろしくお願いいたします、
シャカル

force_https 設定でこの問題は解決します。HTTPS を使用している場合は、この設定が必須となります。

ただし、私の確認限りでは、設定はオンになっており、問題は解決していません。

設定後、Docker を再構築する必要がありますか?

これについて詳しく説明していただけませんか?

インストール完了後に見つけました(技術的には、インストール中にオンにするよう指示されていました)。オンにしました。

送信したテストメールには、確かに HTTPS アドレスが含まれるようになりましたが、サイト自体にアクセスすると、サイトアイコンがまだ HTTP として表示されており、そのため「混合コンテンツ」の警告が消えません。

これは、アイコンを更新していないことが原因かもしれません。実際、まだ置くべきアイコンを持っていません。それでも、なぜそのような状態になるのかが理解できません。

また、一度オフにして再度オンにしてみましたが(笑)、これも問題を解決しませんでした。

現在「安全ではない」と報告されているアイコン/ロゴの再アップロードを試みてください。

はい、現在使用されている同じアイコン(デフォルトの Discourse アイコン)を再アップロードしたところ、問題は解決しました。

ありがとうございました。ただ、もし提案させてもらうなら、インストール方法のページは本当に更新されるべきです。force_https について言及すべきですし、画像の再アップロードが必要になる場合もあることに触れるべきです。

私は、SSL 終端を行う HAProxy を前面に置いた Discourse で、同じ問題に取り組んでいました。
「Force Https」を有効にしましたが、まだ favicon などで「混合コンテンツ」の警告が出ていました。
しかし、ロゴをアップロードすると、変更していない favicon の警告も含め、すべての警告が消えました。
つまり、画像をアップロードすると(少なくともベースシステムの画像については)、すべての画像の URL が再計算されるのでしょうか?