HTTPでDiscourseをビルドするとエラーが発生します

  1. ドメイン構成が完了しました
  2. AWS EC2インスタンスが作成されました
  3. ACMを使用して証明書が発行されました
  4. 443を設定し、ALB経由で証明書を接続しました
  5. ALBはドメイントラフィックをポート80でEC2インスタンスにルーティングします

Discourseをビルドする前に、HTTP接続を構成するためにapp.ymlファイルを変更しました。

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## 次の行のコメントを解除すると、IPv6リスナーが有効になります
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Let's Encrypt (https) を追加したい場合は、これらの2行のコメントを解除してください
  #- "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

## このコンテナはどのTCP/IPポートを公開しますか?
## Apacheやnginxなどの他のWebサーバーとポートを共有したい場合は、
## https://meta.discourse.org/t/17247 を参照してください
expose:
  - "80:80"   # http
 #- "443:443" # https

変更を加えた後、Discourseをビルドして構成を確認しましたが、nginxは次のエラーでSSLキーの読み込みを要求し続けています。

[emerg] 7416#7416: 証明書 "/shared/ssl/discourse.xxxxxxx.com.cer" を読み込めません: PEM_read_bio_X509_AUX() が失敗しました (SSL: error:0480006C:PEM routines::no start line:Expecting: TRUSTED CERTIFICATE)

nginxがキーの読み込みを試みるのを防ぐ方法、またはnginxをHTTPで正しく動作させる方法はありますか?

エラーは、Nginx がまだ SSL 証明書を探しているのに、ALB が SSL を処理しているために発生します。修正方法は次のとおりです。

  1. app.yml を確認する: SSL テンプレートは既に無効にしているようですので、この手順はスキップできます。

  2. Discourse を再構築する: ./launcher rebuild app を実行して変更を適用します。

  3. Nginx の設定を確認する: コンテナ内で Nginx の設定を確認し、SSL 関連の行 (ssl_certificatessl_certificate_key) がないことを確認してください。もし見つかった場合は、それらを削除し、sv restart nginx で Nginx を再起動してください。

  4. ALB のセットアップを確認する: ALB がポート 443 で SSL を終端処理し、HTTP (ポート 80) を EC2 に転送していることを確認してください。

これで Nginx が SSL 証明書を探すのを停止し、すべてが HTTP 経由で正常に動作するはずです。

ありがとうございます。関連コンテンツとその他のフィードバックに基づいて問題を解決しました。