Suggerimento per template Cloudflare per ottenere l'IP reale dagli utenti

Ciao a tutti,

Ho appena scoperto a mie spese l’impostazione real_ip_header CF-Connecting-IP; di Cloudflare in nginx…

Ho una configurazione piuttosto complicata con nginx proxy manager che si trova nella sua immagine docker (sto usando SWAG di linuxserver.io, che è fantastico tra l’altro), quindi il percorso di connessione è il seguente:
Utente -> Cloudflare -> Server (1° container docker: Nginx -> 2° container docker: Discourse)

Ho entrambi i container docker nella stessa rete docker, quindi comunicano; va bene.
Ho avuto un vero problema nel cercare di ottenere l’IP di origine dell’utente nei log di Discourse. Ho letto tutti i bei thread qui e ho aggiunto il template cloudflare al mio file app.yml, ma non ha ancora funzionato…

Dopo essermi strappato i capelli, ho capito che il problema non era il template Cloudflare di per sé, ma il fatto che il container Discourse stava ottenendo l’indirizzo IP dal container NGINX e ho dovuto aggiungere il CIDR IP della rete docker a set_real_ip_from come questo:
set_real_ip_from 172.18.0.0/16;

Per aiutare i futuri hoster, sarebbe possibile aggiungere questa riga al template cloudflare? L’intervallo IP 172.18.0.0/16 è comunque privato, quindi anche se non si dispone di NPM in un container docker, non farà male aggiungere questo intervallo.

Il mio suggerimento sarebbe di cambiare questa riga in cloudflare.template.yml:
sed -i \"/sendfile on;/a $CONTENTS\\nreal_ip_header CF-Connecting-IP;\" /etc/nginx/conf.d/discourse.conf
in questa riga:
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

Cosa ne pensi?

Ci sono molti argomenti sull’uso di un proxy inverso che includono come farlo. Non tutti coloro che utilizzano Cloudflare utilizzano un proxy inverso.

Tuttavia, un modello di proxy inverso potrebbe essere utile, poiché devo cercarlo ogni volta che lo imposto senza i miei script.

Giusto. E vale anche il contrario: non tutti quelli che usano un proxy inverso usano Cloudflare :wink:

Questo suggerimento è davvero destinato a semplificare la vita alle persone che usano Cloudflare. Non cambierebbe nulla per coloro che non usano un proxy inverso in docker, ma potrebbe potenzialmente far risparmiare ore di ricerca della risposta a un semplice problema.

1 Mi Piace

Le persone che usano Cloudflare probabilmente hanno una vita difficile. Puoi cercare qui e trovare molti esempi di come. Installare il template è solo una parte dei problemi che potresti avere, e la più facile da risolvere. (Ti consiglierei di usare una vera CDN come bunny.net che è economica, ma non gratuita, e facile da configurare, ma non è quello che hai chiesto.)

Naturalmente, il tuo problema non aveva nulla a che fare con Cloudflare, ma con il proxy inverso, quindi cercare Cloudflare probabilmente non è stato d’aiuto!

Tuttavia, aggiungere alcuni template aggiuntivi come il proxy inverso (e quello che voglio davvero, uno per precompilare gli asset e inviarli a S3) è una buona idea.

Buona fortuna.

1 Mi Piace