Come risolvere il problema per cui tutto il traffico appare proveniente dai server Cloudflare invece che dall'IP del browser dell'utente

Utilizzando 1panel per distribuire Discourse in un contenitore e impostando un proxy inverso per il sito web, dopo aver configurato il dominio con Cloudflare CDN, come risolvere il problema per cui tutto il traffico risulta provenire dai server di Cloudflare invece che dall’IP del browser dell’utente?

Desideri utilizzare il modello Cloudflare nel tuo file app.yml.

Ho provato, ma non funziona :rofl:. Il motivo del fallimento potrebbe essere che ho usato 1panel per la distribuzione tramite container e ho configurato un proxy inverso?

Puoi modificare direttamente il file di configurazione di nginx? Se sì, apporta le modifiche suggerite qui. Ora, dopo aver ricaricato il servizio nginx, dovrebbe funzionare. Spero che questo sia d’aiuto!

Curiosi di sapere le ragioni per l’utilizzo di due reverse proxy? Uno presso l’azienda di hosting e CloudFlare. Esiste una ragione tecnica?

Ho implementato Discourse tramite containerizzazione utilizzando il pannello di gestione server 1Panel (open source), per semplificare la gestione del server.

L’architettura di 1Panel è: Utente -> Cloudflare -> Nginx di 1Panel -> Contenitore Discourse.

La mia comprensione è che, anche se modifico la configurazione app.yml di Discourse, il Nginx di 1Panel rimane comunque posto tra Cloudflare e Discourse.

Quindi è un vincolo tecnico introdotto da 1panel.

Stai eseguendo più server o solo Discourse sul VPS? Se stai eseguendo solo Discourse, probabilmente non hai bisogno di 1panel. A meno che non ci sia un motivo tecnico per cui hai bisogno di 1panel.

Il mio Discourse è nativo su un VPS dietro Cloudflare. Questa configurazione funziona.

Oltre a Discourse, c’è anche OpenClaw :grinning_face:

Quasi sicuramente.

L’indirizzo IP che vedi è l’IP del contenitore 1panel?

Utilizzando l’account amministratore per visualizzare gli utenti, l’ultimo indirizzo IP utilizzato risulta essere un indirizzo IP di Cloudflare.

L’hai già implementato?

https://support.cpanel.net/hc/en-us/articles/360051107513-How-to-restore-visitors-IP-with-mod-remoteip#:~:text=The%20Apache%20mod_remoteip%20module%20restores%20the%20original,instead%20of%20the%20original%20visitor’s%20IP%20address.

Questa è la soluzione per Apache per utilizzare l’IP dell’utente finale invece dell’indirizzo IP di Cloudflare.

Grazie, uso nginx. Ho consultato alcuni tutorial che spiegano come configurare il file di nginx dell’host per il reverse proxy; ci proverò quando avrò un po’ di tempo.

Hai installato il modello Cloudflare come suggerito? Se no, perché stai chiedendo aiuto qui?

Modelli Cloudflare? Ho già modificato il file di configurazione yml e abilitato il modello Cloudflare, ma lo ho fatto tramite la distribuzione containerizzata di Discourse su 1Panel (l’architettura di 1Panel è: utente → Cloudflare → Nginx di 1Panel → contenitore Discourse). Modificare solo il file yml non è sufficiente; è necessario anche aggiornare il file di configurazione del reverse proxy Nginx all’interno di 1Panel. Al momento non ho tempo per procedere con le modifiche.

Sembra che tu debba modificare l’istanza di nginx di 1Panel per sfruttare la sua funzionalità real_ip per le richieste degli utenti. Cloudflare invia queste informazioni tramite l’intestazione CF-Connecting-IP, e puoi utilizzare tale intestazione per dire a nginx come comportarsi.

Sarebbe probabilmente utile creare un’automazione basata su script per scaricare regolarmente gli elenchi degli indirizzi proxy di Cloudflare (IPv4, IPv6), in modo da mantenere aggiornati gli intervalli real_ip di nginx.

Se non hai accesso al file nginx.conf di 1Panel, probabilmente non c’è molto da fare. La combinazione di real_ip di nginx e dell’intestazione CF-Connecting-IP di Cloudflare è il metodo previsto per risolvere questo problema quando si gestisce un reverse proxy autonomo davanti a un Discourse auto-ospitato.