Vorschlag für Cloudflare-Vorlage zur Ermittlung der echten IP von Benutzern

Hallo zusammen,

ich habe gerade auf die harte Tour die Einstellung real_ip_header CF-Connecting-IP; von Cloudflare in Nginx entdeckt…

Ich habe eine ziemlich komplizierte Einrichtung, bei der Nginx Proxy Manager in seinem eigenen Docker-Image läuft (ich benutze SWAG von linuxserver.io, was übrigens großartig ist), sodass der Verbindungspfad wie folgt aussieht:
Benutzer -> Cloudflare -> Server(1. Docker-Container: Nginx -> 2. Docker-Container: Discourse)

Ich habe beide Docker-Container im selben Docker-Netzwerk, sodass sie kommunizieren; das ist in Ordnung.
Ich hatte ein echtes Problem, die ursprüngliche IP-Adresse des Benutzers in den Discourse-Protokollen zu erhalten. Ich habe alle hilfreichen Threads hier gelesen und die Cloudflare-Vorlage zu meiner app.yml-Datei hinzugefügt, aber es funktionierte immer noch nicht…

Nachdem ich mir die Haare ausgerissen hatte, stellte ich fest, dass das Problem nicht die Cloudflare-Vorlage an sich war, sondern die Tatsache, dass der Discourse-Container die IP-Adresse vom NGINX-Container erhielt und ich den Docker-Netzwerk-IP-CIDR zu set_real_ip_from hinzufügen musste, wie folgt:
set_real_ip_from 172.18.0.0/16;

Um zukünftigen Hostern zu helfen, wäre es möglich, diese Zeile zur Cloudflare-Vorlage hinzuzufügen? Der IP-Bereich 172.18.0.0/16 ist sowieso privat, sodass es keinen Schaden anrichtet, diesen Bereich hinzuzufügen, selbst wenn Sie NPM nicht in einem Docker-Container haben.

Mein Vorschlag wäre, diese Zeile in cloudflare.template.yml zu ändern:
sed -i \"/sendfile on;/a $CONTENTS\\nreal_ip_header CF-Connecting-IP;\" /etc/nginx/conf.d/discourse.conf
zu dieser Zeile:
sed -i \"/sendfile on;/a set_real_ip_from 172.18.0.0/16;\\n$CONTENTS\\nreal_ip_header CF-Connecting-IP;\" /etc/nginx/conf.d/discourse.conf

Was meinst du?

Es gibt eine Reihe von Themen zur Verwendung eines Reverse-Proxys, die Anleitungen dazu enthalten. Nicht jeder, der Cloudflare nutzt, verwendet einen Reverse-Proxy.

Eine Vorlage für einen Reverse-Proxy wäre jedoch gut, da ich sie jedes Mal nachschlagen muss, wenn ich sie ohne meine Skripte einrichte.

Richtig. Und umgekehrt gilt auch: Nicht jeder, der einen Reverse-Proxy nutzt, verwendet Cloudflare :wink:

Dieser Vorschlag soll das Leben von Leuten, die Cloudflare nutzen, wirklich einfacher machen. Für diejenigen, die keinen Reverse-Proxy in Docker verwenden, würde sich nichts ändern, aber es könnte potenziell Stunden der Suche nach der Antwort auf ein einfaches Problem ersparen.

1 „Gefällt mir“

Leute, die Cloudflare nutzen, haben wahrscheinlich ein hartes Leben. Du kannst hier suchen und viele Beispiele dafür finden. Die Installation der Vorlage ist nur ein Teil der Probleme, die du haben könntest, und das am einfachsten zu behebende. (Ich würde dir empfehlen, ein echtes CDN wie bunny.net zu verwenden, das günstig – aber nicht kostenlos – und einfach zu konfigurieren ist, aber das ist nicht das, wonach du gefragt hast.)

Natürlich hatte dein Problem nichts mit Cloudflare zu tun, sondern mit dem Reverse-Proxy, daher war die Suche nach Cloudflare wahrscheinlich keine Hilfe!

Dennoch ist das Hinzufügen einiger weiterer Standardvorlagen wie Reverse-Proxy (und der, die ich wirklich will – eine zum Vorabkompilieren von Assets und zum Pushen nach S3) eine gute Idee.

Viel Glück.

1 „Gefällt mir“