LiteSpeedリバースプロキシの背後にある新しいインストールがロード画面で停止します

既存のDiscourseのインストールを新しいサーバーに移行しており、その最初の段階として、新しいサーバーにクリーンなDiscourseのインストールを行っています。新しいサーバーには既にポート80と443でWebサーバーが稼働しているため、こちらで説明されているように、リバースプロキシの背後でUnixソケットとしてDiscourseを実行しています。

唯一異なる点は、nginxではなくOpenLiteSpeedをリバースプロキシとして使用していることです。しかし、OpenLiteSpeedの設定は非常に簡単で、他のDockerアプリでも動作するように設定しています。ソケットアドレスを使用して外部アプリケーションを設定し、Proxy contextを使用してすべてのリクエストをソケットにリダイレクトする必要があります。

その結果、プロキシされたURL(この場合はforum.prostasia.org)にアクセスするとDiscourseはロードされますが、ローディング画面のアニメーションドットが表示されたままフリーズしてしまいます。

トラブルシューティングの提案はありますか?よろしくお願いします!

JavaScriptコンソールを開いて、何が読み込まれているか確認できます。コンソールとネットワークタブを確認してください。

Let’s Encryptテンプレートを削除しましたか?

「いいね!」 1

ありがとうございます、助かりました。このようなエラーがたくさん表示されます。

Refused to load the script x because it violates the following Content Security Policy directive:

同じリバースプロキシの前に別のDockerコンテナを配置したところ、環境変数 TRUSTED_PROXIES** に設定することで解決できました。

同じことを試す価値はありますが、Discourseではどのようにすればよいでしょうか?

コンテンツセキュリティポリシーの設定を大きく間違えているようです。

また、http://www.example.com/ からロゴを取得しようとしているため、どこで問題が発生しているかの手がかりになるかもしれません。どうやら、それがあなたのフォームがホスト名だと認識しているもののようです…

image

「いいね!」 1

ありがとうございます。正直なところ、example.com がどこから来たのかわかりません。インストールスクリプト discourse-setup がこのユースケースでは機能しなかったため、行ったことは containers/app.yml を編集してから launcher rebuild app を実行しただけです。どこかで example.com を上書きし忘れたのだと思います。

しかし、とにかくセットアップを修正することができました。新しいインストールをブートストラップしてバックアップを復元するのではなく、元のサーバーから /var/discourse ディレクトリ全体のtarballを作成し、その上に再構築を実行したところ、すべて正常に動作しているようです。今後バックアップを復元する方法はそれになります。 :slight_smile:

「いいね!」 1

discourse-setup は動作させることができます。以下のいずれかの方法を試してください。

  • 80/443 で稼働しているものを一時的に停止する
  • 別のサーバーで構築してからコピーする
  • 接続チェックをバイパスするスイッチを使用する
「いいね!」 1