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?