yo @Falco, kommt die real_ip (von cf als CF-Connecting-IP-Header bereitgestellt) bei dir in den Nginx-Logs an? Bei mir nicht. Ich sehe nur die IP von cloudflared.
Ich denke, eine oder beide der folgenden Dinge müssen getan werden (werde nach der Untersuchung weiter berichten):
- Füge eine
set_real_ip_from-Konfigurationszeile zu Nginx für die IP voncloudflaredhinzu. Wenn sich das als Problem herausstellt, dann würde ich vermuten, dass keine der anderenset_real_ip_from-Zeilen (bereitgestellt vontemplates/cloudflare.template.yml) für Argotunnel-Benutzer benötigt werden. Und in diesem Fall sollte vielleicht eine separate Argotunnel-Vorlage zum Docker-Repository hinzugefügt werden, die deinecloudflared-IP aus einer Umgebungsvariable oder etwas in deiner Haupt-app.ymlzieht. Korrigiere dasBestätigt, nicht benötigtlog_format. Ich denke, das ist wahrscheinlich nicht das Problem, aber.
Bearbeiten:
Hier ist, was ich tue, um es zum Laufen zu bringen:
Verwende nicht die Cloudflare-Vorlage. Das hat keinen Sinn.
Füge stattdessen dies zu deiner app.yml hinzu:
hooks:
after_web_config:
- file:
path: /etc/nginx/conf.d/cloudflare_tunnel_real_ip.conf
contents: |
# Original-Besucher-IPs wiederherstellen (ngx_http_realip_module)
set_real_ip_from 10.100.20.200/32; # Deine Cloudflared/Argotunnel IP-Reichweite
real_ip_header CF-Connecting-IP;
Das landet übrigens automatisch im Nginx http-Kontext, was angemessen ist.
PS: Meiner Meinung nach sollte die Cloudflare-Vorlage zur besseren Übersichtlichkeit ihre Nginx-Konfiguration auch in eine separate Datei generieren, anstatt sed -i zu verwenden, um sie zu /etc/nginx/conf.d/discourse.conf hinzuzufügen.