So lösen Sie das Problem, dass der gesamte Traffic von Cloudflare-Servern und nicht von der Browser-IP des Benutzers stammt

Wie löst man das Problem, dass bei der Bereitstellung von Discourse in einem 1Panel-Container mit einem Reverse Proxy und der Nutzung von Cloudflare CDN für die Domain alle Anfragen als von Cloudflare-Servern statt vom Browser des Benutzers stammend angezeigt werden?

Sie möchten die Cloudflare-Vorlage in Ihrer app.yml verwenden.

Ich habe es versucht, aber es funktioniert nicht :rofl:. Der Fehler könnte daran liegen, dass ich es mit einem 1Panel-Container bereitgestellt und einen Reverse-Proxy verwendet habe?

Können Sie die nginx-Konfigurationsdatei direkt bearbeiten? Wenn ja, nehmen Sie die hier vorgeschlagenen Änderungen vor. Nach dem Neuladen des nginx-Dienstes sollte es dann funktionieren. Hoffe, das hilft!

Ich bin neugierig auf die Gründe für den Betrieb von zwei Reverse-Proxys: einen beim Hosting-Anbieter und einen bei CloudFlare. Gibt es dafür einen technischen Grund?

Ich habe Discourse mit dem Open-Source-Server-Management-Panel 1panel in Containern bereitgestellt, um die Serververwaltung zu erleichtern.

Die Architektur von 1Panel ist: Benutzer -> Cloudflare -> 1Panel Nginx -> Discourse-Container.

Meines Erachtens steht das Nginx von 1Panel weiterhin zwischen Cloudflare und Discourse, selbst wenn die app.yml-Konfiguration von Discourse geändert wird.

Es handelt sich also um eine technische Einschränkung, die von 1Panel eingeführt wurde.

Betreiben Sie mehrere Server oder nur Discourse auf dem VPS? Wenn Sie nur Discourse betreiben, benötigen Sie wahrscheinlich kein 1Panel. Es sei denn, es gibt einen technischen Grund, warum Sie 1Panel benötigen.

Mein Discourse läuft nativ auf einem VPS hinter Cloudflare. Diese Konfiguration funktioniert.

Neben Discourse gibt es noch OpenClaw :grinning_face:

Fast sicher.

Ist die IP, die du siehst, die IP des 1panel-Containers?

Wenn Sie Benutzer als Administrator anzeigen, wird die zuletzt verwendete IP-Adresse als Cloudflare-IP-Adresse angezeigt.

Haben Sie dies bereits umgesetzt?

https://support.cpanel.net/hc/en-us/articles/360051107513-How-to-restore-visitors-IP-with-mod-remoteip#:~:text=The%20Apache%20mod_remoteip%20module%20restores%20the%20original,instead%20of%20the%20original%20visitor’s%20IP%20address.

Dies ist die Lösung für Apache, um die IP-Adresse des Endnutzers anstelle der Cloudflare-IP-Adresse zu verwenden.

Danke, ich verwende nginx. Ich habe einige Tutorials durchsucht, in denen die Konfigurationsdatei des nginx-Reverse-Proxy auf dem Host-System beschrieben wird. Ich werde es mir in meiner Freizeit ansehen und es ausprobieren.

Hast du die Cloudflare-Vorlage wie empfohlen installiert? Wenn nicht, warum fragst du dann hier nach Hilfe?

Cloudflare-Vorlage? Ich habe die YAML-Konfigurationsdatei bereits geändert und die Cloudflare-Vorlage aktiviert. Da ich Discourse jedoch über 1Panel containerisiert bereitstelle (die 1Panel-Architektur lautet: Benutzer → Cloudflare → 1Panel Nginx → Discourse-Container), reicht die Änderung der YAML-Datei allein nicht aus. Ich muss auch die Konfigurationsdatei des Reverse-Proxys NGINX in 1Panel anpassen. Im Moment habe ich jedoch keine Zeit, dies noch umzusetzen.

Es scheint, als müssten Sie die Nginx-Instanz von 1Panel anpassen, um die real_ip-Funktionalität für Benutzeranfragen zu nutzen. Cloudflare übermittelt diese Informationen über den Header CF-Connecting-IP, und Sie können diesen Header verwenden, um Nginx mitzuteilen, wie es damit umgehen soll.

Es wäre wahrscheinlich sinnvoll, eine skriptbasierte Automatisierung zu erstellen, die regelmäßig die Proxy-Adresslisten von Cloudflare herunterlädt (IPv4, IPv6), um Ihre Nginx real_ip-Bereiche aktuell zu halten.

Wenn Sie keinen Zugriff auf Ihre 1Panel nginx.conf-Datei haben, stehen Ihre Chancen wahrscheinlich schlecht. Die Kombination aus Nginx real_ip und dem CF-Connecting-IP-Header von Cloudflare ist die vorgesehene Lösung für dieses Problem, wenn Sie Ihren eigenen Reverse-Proxy vor einem selbst gehosteten Discourse verwalten.