アバター、サイトロゴ、および証明書エラー

こんにちは!

Discourse サーバーを約 5 台セットアップしましたが、すべて奇妙な動作を示しています。これが本当にバグなのか、あるいは他の誰かにも同様の経験があるのか分かりません。

再現手順

  • サーバーのセットアップは円滑に進みます
  • ウィザードによる手順も問題なく、すべての画像が期待通りにアップロードされ表示されます
  • ユーザーがサインアップリンクを受け取り、クリックしてフォローし、登録も正常に完了します
  • (ここで問題が発生します)ユーザーがログインすると、サイトロゴがすべて壊れており、テキストタイトルのみが表示されます
  • ユーザーはカスタムアバターをアップロードまたは割り当てることができません
  • サイト証明書が「サイトが安全ではない」と警告します
  • 何らかの理由で、これはサインアップに使用されたブラウザでのみ発生し、Chrome では失敗率が非常に高くなります

トラブルシューティング

  • ブラウザのキャッシュとクッキーをクリアするようユーザーに伝えても、まだ壊れたままです
  • ブラウザ(主に Chrome)の再インストールを依頼しましたが、依然として壊れたままです
  • Chrome で別のアイデンティティを使用するか、別のブラウザ(Safari、Firefox など)を試すよう依頼すると、動作します!

なぜ最後の項目が動作し、なぜ元のサインアップアイデンティティが破損しているのか、全く分かりません。もしそれが解決策だとしても、600〜700 人のユーザーに Chrome のアイデンティティからサインアウトして再サインインすることを求めるのは現実的ではありません。

何かアイデアはありませんか?

よろしくお願いいたします、
マーク

標準的な30分のインストールですか?それとも何かカスタマイズされた部分がありますか?

問題が解決するか確認するために、サイト設定でforce_httpsを有効にしましたか?

最新のブランチ上のサンドボックスでは私の環境で再現できないため、影響を受けているインスタンスのリンクを共有いただければ非常に助かります。

こんにちは、Bahnu さん。

  • 標準的な 30 分のインストール
  • カスタマイズなし
  • force_https は有効にしていませんが、おっしゃる通り、この問題は登録に使用されたブラウザにのみ影響します

force_httpsを有効にしてみてください。これで99%解決すると思います。

「いいね!」 1

はい、すべてのインストールインスタンスは、同一マシンではないリバース Nginx プロキシから証明書を取得します。それでも force_https は効果がありますか?

それは標準的なインストールではありません。あなたはそうだったと言いました。

Discourse が適切に設定されたリバースプロキシの背後にある場合、force_https は確かに違いを生みます。この設定は、Discourse にすべてのリソースとアセットを HTTPS 経由で読み込むように指示するものです。

了解しました、申し訳ありません。

では、force_https は app.yml 内の設定ですか、それとも私の Nginx サーブロックの設定ですか?

すでにトラフィックは正しく転送されていますが、yml ファイルにはそのプロパティが見当たりません。

どちらでもありません。

force_https は、管理画面で有効にする必要があるサイト設定です。

ロックアウトされる可能性がありますか?

リバースプロキシの設定が誤っていなければ、ここには全く心配する必要はありません。

リバースプロキシの設定がわからない場合は、この設定を確認して、あなた自身の設定と比較してください。

実は、その通りでした。ロックアウトしてください。force_httpsを有効にすると画像の問題は解決しましたが、新しいセッションのブラウザからの認証ができなくなりました。既存のセッションは問題ありませんが、一度ログアウトすると再ログインできなくなります。

リバースプロキシに問題があります。設定を確認して、すべてが正しく設定されているか確認してください。

ちょうどやりました。記事が示す通り、サーバーブロック内の設定はすべて効果的に済ませています。そのため、初期のサインアップ/認証後、代替プロフィールやブラウザでのセッションが通常通り機能しているのだと思います。

設定で唯一異なる点は、templates.yml を使用していないことです。

これには、さらに大規模な調査が必要になりそうです。

わかりました。奇妙ですね。何も変更していないのに、すべての画像は完全に正常に動作しています。それだけです。

ただし、初期インストール時のブラウザ/ユーザー固有の問題で、依然として無効な証明書が表示されています。

それはブラウザのキャッシュか、証明書の設定ミスが原因かもしれません。Let’s Encrypt の SSL 証明書か、それ以外の証明書を取得しましたか?

Let’s Encrypt を Certbot で使用しています。証明書は正常です。ブラウザのキャッシュだと思われます。

シークレットモードで登録を試してみてください。それでもエラーが発生しますか?

また、ここには少し怪しい点があると考えています。外部認証(ソーシャルログインや SSO など)を使用していますか?

いいえ。外部認証はありません。シークレットモードで試しましたが、効果はありませんでした。同じ結果です。サーバーブロックに何か問題があるはずです。後で少し調査します。

そのようなインストールのリンクを共有してもらえませんか?

nginx の設定は、こちらに記載されているものを参考にしましたか?

X-Forwarded-Proto を送信しているか確認してください。

「いいね!」 4