Penar様
まず、私のセットアップの詳細を明確にする必要があるかもしれません。これは標準的なデプロイメントとは少し異なります。
- SSLアクセラレータとして機能する中央ロードバランサー(https://www.haproxy.org/)(複数のWebサービス用であり、Discourse専用ではありません)。インターネットからこれらのサービスへのアクセスはhttps経由のみ許可されています。httpからhttpsへの切り替えはロードバランサー自体で行われます。詳細はhttps://www.haproxy.com/blog/redirect-http-to-https-with-haproxy を参照してください。
- HAProxyは、プライベートネットワーク(10.x.x.x)上のバックエンドにフロントエンドリクエストを転送しますが、暗号化は行いません。このトラフィックは、Dockerホスト上のローカルnginxで終了します。
- nginxは、
proxy_pass ``http://unix``:/mnt/data/discourse/shared/web-only/nginx.http.sockを使用して、Web_onlyコンテナのhttpソケットにリクエストを転送します。
(web_only.ymlおよびdata.ymlを使用した2コンテナセットアップを使用しています)。詳細はtemplates/web.socketed.template.ymlを参照してください。
https暗号化はすべてDiscourseコンテナの外部で行われるため、SiteSetting.force_https は必要ありません。すでにhttps://meta.discourse.org/t/discourse-openid-connect-oidc/103632プラグインと独自のIDPに基づいたOAuthを使用しています。Discourse OIDCプラグインには、「well-known」 OpenID Connect discovery document の設定が含まれています。私の場合は次のようになります: https://login.netzwissen.de/realms/netzwissen/.well-known/openid-configuration
Discourse IDが、DiscourseコンテナインスタンスとDiscourse ID IDP間のリンクのために同様のものを実装すれば、問題は発生しないでしょう。「Discourse ID」は固定IDPを使用するため、このような「well-known URL」は、httpsプレフィックスを含めてハードコードすることさえ可能です。