Discourse auf einem privaten Internet mit Cloudflare Tunnel installieren

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 von cloudflared hinzu. Wenn sich das als Problem herausstellt, dann würde ich vermuten, dass keine der anderen set_real_ip_from-Zeilen (bereitgestellt von templates/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 deine cloudflared-IP aus einer Umgebungsvariable oder etwas in deiner Haupt-app.yml zieht.
  • Korrigiere das log_format. Ich denke, das ist wahrscheinlich nicht das Problem, aber. Bestätigt, nicht benötigt

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.

1 „Gefällt mir“