Für den Kontext: Mein Discourse-Test-Server läuft in einem Proxmox-Container hinter Nginx (npmplus) auf einem anderen Server im selben Netzwerk (aber nicht im selben Subnetz). Nichts Besonderes. Ich habe versucht, force-https zu aktivieren, bekam aber ständig CSRF-Validierungsfehler, also habe ich es wieder deaktiviert, da der Aufwand nicht gerechtfertigt war. Unabhängig davon funktioniert die Site über HTTPS einwandfrei, da sowohl Nginx als auch Cloudflare korrekt dafür eingerichtet sind:
Gibt es eine Workaround-Lösung, die nicht bedeutet, stundenlang mit npmplus zu kämpfen, um zu verhindern, dass Discourse CSRF-Validierung sich über irgendetwas beschwert? Dieser Thread dient nicht der Fehlersuche bei npmplus oder SSL; ich möchte einfach Discourse ID beheben.
Die Fehlermeldung „Discourse ID returned" besagt, dass die Redirect-URI der Site https sein muss. Daher müssen Sie force_https aktivieren oder über Ihre Proxy-Konfiguration angeben, dass die Anfragen über https eingehen.
Huh, ich habe das wohl nie bemerkt. Wie gesagt, ich habe versucht, force_https zu aktivieren, bekam aber bei jedem Versuch CSRF-Fehler. Vielleicht funktionieren die normalen Nginx-Variablen auf npmplus einfach nicht (laut den Anweisungen direkt darüber), denn dies ist die Konfiguration, die ich verwendet habe:
Ich denke, das aktuelle Problem liegt einfach an einer merkwürdigen Darstellung der Variablen, die npmplus bereitstellt. Ich hatte zuvor eine funktionierende Konfiguration, habe sie aber verloren und bin im Moment nicht wirklich sicher, was zu tun ist. Ich habe mich für die folgende Einstellung entschieden, möchte sie jedoch erst aktivieren, wenn ich zu 100 % sicher bin, dass sie funktioniert, um einen BAD CSRF-Fehler und einen erneuten Ausflug zur Rails-Konsole zur Behebung zu vermeiden.
Interessanterweise scheint es lediglich den Verkehr über Port 443 abzulehnen, was meiner Meinung nach nicht normal ist, obwohl der Proxy derzeit auf Port 80 eingestellt ist.
Dieser Zeiger kann nicht dereferenziert werden – ich glaube, Sie sprechen vom Discourse-Container?
force_https beeinflusst nicht, ob Discourse auf Port 443 (HTTPS) bereitgestellt wird; es teilt Discourse lediglich mit, dass es davon ausgehen soll, dass es immer über HTTPS abgerufen wird.