Installer Discourse sur une connexion Internet résidentielle avec Cloudflare Tunnel

yo @Falco, est-ce que le real_ip (fourni par cf comme en-tête CF-Connecting-IP) remonte pour toi dans les logs nginx ? Pas pour moi. Je ne vois que l’IP de cloudflared.

Je pense qu’une ou les deux choses suivantes doivent être faites (je ferai un suivi après investigation) :

  • ajouter une ligne de configuration set_real_ip_from à nginx pour l’IP de cloudflared. Si c’est ça le problème, alors je suppose qu’aucune des autres lignes set_real_ip_from (fournies par templates/cloudflare.template.yml) n’est nécessaire pour les utilisateurs d’argotunnel. Et dans ce cas, peut-être qu’un modèle argotunnel séparé devrait être ajouté au dépôt docker qui récupère ton IP cloudflared à partir d’une variable d’environnement ou de quelque chose dans ton app.yml principal.
  • corriger le log_format. Je pense que ce n’est probablement pas le problème, cependant. Confirmé inutile

edit :
voici ce que je fais pour que ça marche :

n’utilise pas le modèle cloudflare. Ça ne sert à rien.
Au lieu de cela, fusionne ceci dans ton app.yml :

hooks:
  after_web_config:
    - file:
        path: /etc/nginx/conf.d/cloudflare_tunnel_real_ip.conf
        contents: |
          # restaurer les IPs originales des visiteurs (ngx_http_realip_module)
          set_real_ip_from 10.100.20.200/32; # ta plage d'IP cloudflared/argotunnel
          real_ip_header CF-Connecting-IP;

cela se retrouve automatiquement dans le contexte http de nginx, ce qui est approprié.

PS : à mon avis, pour plus de clarté, le modèle cloudflare devrait également générer sa configuration nginx dans un fichier séparé au lieu d’utiliser sed -i pour l’ajouter à /etc/nginx/conf.d/discourse.conf.

1 « J'aime »