Site antwortet mit 502 Bad Gateway – liegt es an Ruby?

Wir betreiben Discourse seit mindestens drei Jahren, und gestern habe ich den Fehler gemacht, die Instanz neu zu starten, in der Hoffnung, dass dies eine Domainänderung bewirkt. Die Instanz läuft, und wir können sehen, dass Nginx Anfragen von außen empfängt, aber alle Besucher erhalten ständig die Meldung „502 Bad Gateway“. Hier ist ein Beispiel für einen Eintrag im Nginx-Fehlerprotokoll:

2020/06/22 19:03:26 [error] 11742#11742: *158 connect() failed (111: Connection refused) while connecting to upstream, client: 162.158.159.12, server: <my domain>, request: "GET                / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "<my domain>"

Außerhalb von Docker läuft kein Webserver, daher leitet die app.yml-Datei einfach die Ports 80 und 443 in den Container weiter. Was sollte jedoch auf Port 3000 laufen? Sollte es Ruby/Rails sein?

Hallo Chris,

du hast recht.

Rails läuft in der Discourse-App auf Port 3000.

Vielleicht solltest du das Rails-Log in der App überprüfen, um herauszufinden, was bei Rails los ist.

Hoffentlich hilft dir das ein bisschen.

Haben Sie versucht, den Domainnamen Ihrer Instanz zu ändern?

Dafür gibt es festgelegte Verfahren. Wenn Sie diesen Prozess nicht durchführen, kann es zu Fehlern wie dem von Ihnen erlebten kommen.

Bitte befolgen Sie diese Anleitung, sie hilft Ihnen, den Domainnamen ordnungsgemäß zu ändern.
Change the domain name or rename your Discourse

Es gibt eine „development“-Alternative zur Live-Domain, die irgendwie in die Konfiguration eingeschlichen ist, sodass alles außer den Bildern von der Live-Domain kommt, die Bilder jedoch von der Dev-Domain geladen werden. Da Letztere kein Zertifikat besitzt, stoßen wir (zu Recht) auf ein Cross-Site-Sicherheitsproblem, und die Bilder werden nicht geladen.

Wir versuchen derzeit, den Container neu zu erstellen, wie an anderer Stelle vorgeschlagen.

Eine zusätzliche Komplikation besteht darin, dass der gesamte Datenverkehr über CloudFlare geleitet wird, sodass wir nun Probleme mit SSL-Zertifikaten haben. Nicht sicher, ob templates/cloudflare.template.yml noch funktioniert?

Sie müssen Cloudflare deaktivieren, damit Let’s Encrypt ein Zertifikat anfordern kann.

Alles ist jetzt in Ordnung. Unser bestes Tech-Team hat es geschafft, einen neuen Build zu erstellen, und hat sogar LetsEncrypt zum Laufen gebracht!