force-https が無効なサイトでは DiscourseID を有効化できません

参考までに、私の Discourse テストサイトは、同じネットワーク(ただしサブネットは異なる)上の別のサーバーで動作している Nginx (npmplus) の背後にある Proxmox コンテナで実行されています。特に変わったことはありません。force-https を有効にしようとしましたが、多数の CSRF 検証エラーが発生し続けるため、戦う価値がないとして再度無効にしました。それらのこととは無関係に、Nginx と Cloudflare が適切に設定されているため、サイトは https で正常に動作しています。

先ほどサイト上で DiscourseID を有効にしようとしましたが、エラーに遭遇しました。


npmplus と数時間格闘して Discourse の CSRF 検証が何でもかんでも文句を言うのを止めることなく、回避策はありますか?このスレッドは npmplus や SSL のデバッグ用ではなく、Discourse ID の修正を目的としています。

エラーメッセージ「Discourse ID 返却」は、サイトの Redirect URI が https でなければならないと指摘しています。そのため、force_https を有効にするか、プロキシ設定を通じてリクエストが https 経由で送信されていることを明示する必要があります。

ただし、正常に動作しないものもあります:

「いいね!」 3

ふむ、そんなことには気づいたことがなかったな。以前述べた通り、force_https を有効にしようと試みたが、どんな操作でも CSRF エラーが発生し続けた。おそらく、npmplus では通常の nginx 変数が機能しないのだろう(上記の指示にもそう書かれている通り)。私が使用していた設定は以下の通りだ:

それに加えて、私の CT のポート 443 が応答しなかったため、現在は依然としてローカルでポート 80 を介して接続している。

リバースプロキシの設定を修正し、適切な HTTPS を動作するようにしてください。

「いいね!」 1

現在の問題は、npmplus が露出している変数の不審な動作にあると思います。以前は動作する設定がありましたが、それを失ってしまい、現時点ではどうすればよいかわかりません。以下の設定に落ち着きましたが、BAD CSRF エラーが発生し、再び Rails コンソールで修正する必要に迫られるのを避けるため、100% 動作するまでこの設定を有効にしたくありません。



興味深いことに、これは 443 番ポート以上のトラフィックを拒否しているように見えます。現在プロキシは 80 番ポートに設定されているにもかかわらず、これは正常ではないと思います。

このポインタを参照できません - Discourse コンテナについてお話ししていると思われます。

force_https は、Discourse がポート 443 (HTTPS) でサービスを提供するかどうかには影響しません。Discourse が常に https を介してアクセスされていると想定するよう指示するだけです。

「いいね!」 1