Ein Fehler tritt beim Erstellen von Discourse über HTTP auf

  1. Domain-Konfiguration abgeschlossen
  2. AWS EC2-Instanz erstellt
  3. Zertifikat mit ACM ausgestellt
  4. 443 konfiguriert und das Zertifikat über ALB verbunden
  5. ALB leitet Domain-Traffic an die EC2-Instanz über Port 80 weiter

Bevor ich Discourse baute, habe ich die Datei app.yml geändert, um HTTP-Verbindungen zu konfigurieren:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Uncomment the next line to enable the IPv6 listener
  #- "templates/web.ipv6.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"

## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
  - "80:80"   # http
 #- "443:443" # https

Nachdem ich die Änderungen vorgenommen hatte, baute ich Discourse und überprüfte die Konfiguration, aber nginx fordert weiterhin einen SSL-Schlüssel mit der folgenden Fehlermeldung an:

[emerg] 7416#7416: cannot load certificate "/shared/ssl/discourse.xxxxxxx.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0480006C:PEM routines::no start line:Expecting: TRUSTED CERTIFICATE)

Gibt es eine Möglichkeit, nginx daran zu hindern, den Schlüssel zu laden, oder nginx ordnungsgemäß über HTTP zum Laufen zu bringen?

Der Fehler tritt auf, weil Nginx immer noch nach einem SSL-Zertifikat sucht, aber Ihr ALB die SSL-Verarbeitung übernimmt. Hier ist, wie Sie das beheben können:

  1. Überprüfen Sie Ihre app.yml: Es sieht so aus, als hätten Sie SSL-Vorlagen bereits deaktiviert, daher können Sie diesen Schritt überspringen.

  2. Bauen Sie Discourse neu: Führen Sie ./launcher rebuild app aus, um die Änderungen zu übernehmen.

  3. Überprüfen Sie die Nginx-Einstellungen: Schauen Sie sich innerhalb des Containers die Nginx-Konfiguration an und stellen Sie sicher, dass keine SSL-Zeilen (ssl_certificate, ssl_certificate_key) vorhanden sind. Wenn Sie welche finden, entfernen Sie sie und starten Sie Nginx mit sv restart nginx neu.

  4. Überprüfen Sie Ihre ALB-Konfiguration: Stellen Sie sicher, dass Ihr ALB SSL an Port 443 beendet und HTTP (Port 80) an Ihre EC2 weiterleitet.

Das sollte Nginx daran hindern, nach dem SSL-Zertifikat zu suchen, und alles sollte über HTTP einwandfrei funktionieren!

Danke. Ich habe das Problem basierend auf den verwandten Inhalten und anderem Feedback gelöst.