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 decloudflared. Si c’est ça le problème, alors je suppose qu’aucune des autres lignesset_real_ip_from(fournies partemplates/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 IPcloudflaredà partir d’une variable d’environnement ou de quelque chose dans tonapp.ymlprincipal. corriger leConfirmé inutilelog_format. Je pense que ce n’est probablement pas le problème, cependant.
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.