Ich habe ein paar Tutorials gesehen, die erklären, wie man das macht, aber sie gehen unterschiedliche Wege, was mir nicht weiterhilft. Gibt es eine Möglichkeit, eine Apache-Virtual-Host-Konfiguration für Discourse zu erstellen, sodass eine bestimmte Domain genau wie bei anderen Websites und den entsprechenden Domains auf die Software weiterleitet?
Dabei scheint es jedoch so, als müsste ich wegen der Konfigurationsdateien Nginx verwenden. Meine Frage ist also: Kann ich das Gleiche auch mit Apache machen?
Wenn du dich damit nicht auskennst (und dich nicht damit auseinandersetzen möchtest), empfehle ich dir dringend, Apache zu entfernen und nur Discourse auf dem VPS laufen zu lassen. Falls du mehr Anwendungen betreiben musst, besorge dir einen separaten VPS für Apache-Anwendungen und einen weiteren für Discourse.
Also ich bin zu Nginx gewechselt und alles funktioniert. Ich bin mir ziemlich sicher, dass SSL korrekt eingerichtet ist, aber Chrome zeigt mir die Meldung „Ihre Verbindung zu dieser Website ist nicht vollständig sicher
Das SSL ist mit dem nginx-Dienst innerhalb des Containers eingerichtet. Wenn der Container ins Internet exponiert ist und Sie direkt über den Browser darauf zugreifen (Standard-Installation von Discourse), verfügen Sie über SSL.
Wenn Sie jedoch einen Reverse-Proxy davor schalten (sei es Apache, Nginx oder ein Dienst eines Drittanbieters wie Cloudflare), müssen Sie sicherstellen, dass die Verbindung zwischen dem Browser und dem Reverse-Proxy gesichert ist.
In Ihrem Fall müssen Sie also Zertifikate für den nginx-Reverse-Proxy generieren (ich denke nicht, dass Sie die SSL-Vorlagen von Discourse hinzufügen müssen, da der Container nicht direkt ins Internet exponiert ist; Sie können es tun, müssen aber nicht).
Sie können sich ansehen, wie das mit Let’s Encrypt funktioniert (kostenlos, dasselbe, das in der Standardinstallation von Discourse verwendet wird, aber in diesem Fall für das nginx außerhalb des Containers).
TL;DR Der nginx, der als Reverse-Proxy fungiert, benötigt SSL. Der nginx, der sich innerhalb des Containers befindet, benötigt kein SSL (vorausgesetzt, Sie greifen von derselben Maschine aus zu).
(Oder Sie können andere Ports wie 8080:80 und 8443:443 exponieren und anstelle der Verwendung eines Sockets im nächsten Schritt zu einem Upstream weiterleiten, der auf localhost:80 und/oder localhost:443 zeigt.)
Sie müssen die SSL-Zertifikatsdateien unter /var/discourse/shared/standalone/ssl/ haben. Haben Sie diese? Ich gehe davon aus, dass Sie bereits die Domain a1rp.xyz besitzen und auf der Let’s Encrypt-Website gelesen haben, wie man SSL-Zertifikate erstellt. Denken Sie auch daran, dass Discourse bei der Standardinstallation die Erneuerung der Zertifikate für Sie übernimmt. In Ihrem Fall müssten Sie dies jedoch selbst verwalten (z. B. mit einem Cron-Job), sonst laufen Ihre Zertifikate nach 3 Monaten ab.
Ja, ich habe alles, was du sagtest, in der App-Konfiguration (einschließlich des Beitrags zur Korrektur einiger Dinge). Was das : angeht, ich glaube nicht, dass es einen Unterschied macht. Es gab einen Beitrag, der besagte, dass dort ebenfalls kein : stehen sollte. Die SSL-Dateien habe ich auch bereits.
Ich habe das Problem also behoben. Jemand erwähnte, dass das Favicon in HTTP angezeigt wurde, was den Fehler verursacht hat. Ich habe etwas anderes hochgeladen und wieder gelöscht, und jetzt ist die Website vollständig über HTTPS gesichert