マルチサイトシステムで1つのサイトのみログイン失敗

Discourse のメインサイトが 1 つあり、それぞれに独自のドメインとデータベースを持つ 6 つのサブサイトが追加されています。

当初、メインサイトのデータベースをコピーして一貫性を保ちましたが、他の 5 つのサブサイトでは問題なく動作しました。

1 つのサイトのみで、ログインしようとすると、

  • OIDC 経由の場合、「申し訳ありませんが、承認がタイムアウトしたか、ブラウザを切り替えました。もう一度お試しください。」というエラーが空白の画面に表示されます。
  • ID/PW の場合、「不明なエラー」が ID/PW ボックスの上に表示されます。

動作しているサイトからデータベースをコピーして新しいサイトにコピーしても、機能しませんでした。

以下は、参考までにマルチサイトの設定です。

         oneexample:
           adapter: postgresql
           database: oneexample
           username: adminexample
           password: pwexample
           host: 192.168.1.1
           port: 5432
           pool: 25
           timeout: 5000
           db_id: 5
           host_names:
             - 1example.com

「oneexample」と「1example」を選択したのは、ドメインの先頭に数字が含まれているためです。現時点で唯一の疑念は、その数字が問題を引き起こしているのではないかということです。なぜなら、数字が含まれていないドメイン名の動作しているサイトにデータベースをコピーして戻すと、正常に機能するからです。

別のドメインを選択すべきだと言う人もいるかもしれませんが、このドメインはかなり高価な有料ドメインであり、動作させたいと考えています。

ブラウザの Cookie を削除し、データベースからログインログをパージし、同じデータベースで別のドメインでも試しましたが、すべて正常に動作しました。

私の頭の中にあるテストしていない潜在的な解決策は、ドメインアドレスの先頭の数字を置き換えるために、ドメインをサブドメインに変更することです。たとえば、

しかし、これもまた、このプレミアムドメインに$$$を支払った意味がなくなってしまいます。

私は間違った場所を見ていますか? 何か機能する解決策はありますか?

host_names: xxx.1example.com でも試しましたが、同じエラーが発生します。

同じデータベースで、数字を含まない多数の URL で正常に試すことができました。ドメインの問題に関連しているようですが、他に手がかりがありません。

Nginx の location ブロックから、

proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header X-Forwarded-Proto $scheme;

最初の2行と機能が重複するため、最後の行を削除しました。なぜか Discourse は、ログインが http からではなく http から来たと認識しているようでした。

また、Discourse が HTTPS 経由でログインを試みることを確実にし、最終的に機能するように app.yml に以下の行を追加しました。

  • DISCOURSE_FORCE_HTTPS: true

では、主な疑問は、他の5つのサブサイトではどうだったのか、ということです。

一本取られた

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.