アップロードパスは80ポートですが、プロトコルはhttpsです

最近、長期間稼働していた Discourse インスタンスを新しいものに復元しました。

私の Discourse のバージョンは 3.6.0.beta2-latest です。

現在、アップロードが機能しないという問題があります。

ブラウザのコンソールを見ると、net::ERR_SSL_PROTOCOL_ERROR エラーがたくさん表示されます。

ネットワーク タブを見ると、Chrome が次の URL を取得しようとしていることがわかります。

https://forum.robot.ba:80/uploads/default/optimized/4X/7/2/b/72be8d09005292d2f7ac37158b6d728a063f79ed_2_32x32.png

手動でポート 80 を削除するか、プロトコルを https から http に変更すると、新しいブラウザ ウィンドウでリンクを手動で開くことができます。

私の Discourse インスタンスがアップロード パスに :80 を追加する理由について、何かアイデアはありますか?

サイト設定で強制 HTTPS を検索しましたが、オンになっていないか、その設定が存在しないようです。

app.yml ファイルに何か問題がありますか?以下のテンプレートがあります。

(SSL 証明書を持っていないため、Let’s Encrypt を使用したいです)

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"

# Uncomment these two lines if you wish to add Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

Let’s Encrypt を使用した HTTPS の設定については、こちらのガイドを参照してください。

原因の可能性:非表示の「Port」設定

移行または復元後、非表示の port サイト設定がデータベースに残っている場合があります。
これにより、Discourse が HTTPS URL に誤ったポート(例::80)を追加してしまうことがあります。

確認および修正方法:

  1. コンテナに入る:
./launcher enter app
  1. Rails コンソールを開く:
rails c
  1. 現在の値を確認する:
SiteSetting.port
  1. 80 が返された場合は、クリアする:
SiteSetting.port = ""
  1. その後、すべての投稿とアセットを再ベイクしてリンクを更新する:
Jobs.enqueue(:rebake_all_posts)
「いいね!」 2