Como resolver o problema de todo o tráfego aparecer como vindo do servidor Cloudflare, em vez do IP do navegador do usuário

Ao implantar o Discourse em um contêiner usando o 1panel e configurar um site com proxy reverso, como resolver o problema de todo o tráfego aparecer como vindo dos servidores da Cloudflare, em vez do IP real do navegador do usuário, após usar o CDN da Cloudflare no domínio?

Você deseja usar o modelo do Cloudflare no seu app.yml.

Já tentei, mas não funcionou :rofl:. O motivo da falha pode ser que eu esteja usando o 1panel para implantar via contêiner e tenha configurado um proxy reverso?

Você pode editar o arquivo de configuração do nginx diretamente? Se sim, faça as alterações sugeridas aqui. Após recarregar o serviço do nginx, tudo deve estar funcionando. Espero que isso ajude!

Curioso sobre os motivos para executar 2 proxies reversos? Um na empresa de hospedagem e outro no CloudFlare. Existe algum motivo técnico?

Estou rodando o Discourse em contêineres usando o painel de gerenciamento de servidor 1Panel (código aberto), o que facilita a administração do servidor.

A arquitetura do 1Panel é: Usuário -> Cloudflare -> Nginx do 1Panel -> Contêiner Discourse.

Minha compreensão é que, mesmo modificando o arquivo de configuração app.yml do Discourse, o Nginx do 1Panel continua posicionado entre a Cloudflare e o Discourse.

Então, é uma limitação técnica introduzida pelo 1panel.

Você está executando vários servidores ou apenas o Discourse no VPS? Se estiver executando apenas o Discourse, provavelmente não precisa do 1panel, a menos que haja um motivo técnico para usá-lo.

Meu Discourse é nativo em um VPS atrás do Cloudflare. Essa configuração funciona.

Além do Discourse, há também o OpenClaw :grinning_face:

Quase certamente.

O IP que você está vendo é o IP do container 1panel?

Ao usar o administrador para visualizar o usuário, o endereço IP de último uso exibido é o IP do Cloudflare.

Você já implementou isso?

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.

Esta é a correção para o Apache usar o IP do usuário final em vez do endereço IP do Cloudflare.

Obrigado, estou usando o nginx. Pesquisei alguns tutoriais que mostram como configurar o proxy reverso no arquivo de configuração do nginx do host. Vou testar quando tiver tempo.

Você instalou o modelo do Cloudflare conforme sugerido? Se não, por que está pedindo ajuda aqui?

Modelo Cloudflare? Eu já modifiquei o arquivo de configuração YAML e ativei o modelo do Cloudflare. No entanto, estou implantando o Discourse em containers via 1Panel (a arquitetura do 1Panel é: Usuário → Cloudflare → Nginx do 1Panel → Container do Discourse). Apenas alterar o arquivo YAML não é suficiente; também é necessário modificar o arquivo de configuração do Nginx de proxy reverso dentro do 1Panel. No momento, não tenho tempo para fazer essa alteração.

Parece que você precisa modificar a instância do nginx do 1Panel para utilizar sua funcionalidade real_ip nas solicitações dos usuários. O Cloudflare envia essas informações junto com o cabeçalho CF-Connecting-IP, e você pode usar esse cabeçalho para instruir o nginx sobre como se comportar.

Provavelmente vale a pena criar uma automação baseada em scripts para baixar regularmente as listas de endereços proxy do Cloudflare (IPv4, IPv6) e manter seus intervalos real_ip do nginx atualizados.

Se você não tiver acesso ao arquivo nginx.conf do 1Panel, provavelmente não terá solução. A combinação do real_ip do nginx com o cabeçalho CF-Connecting-IP do Cloudflare é a maneira prevista de resolver esse problema quando você gerencia seu próprio proxy reverso na frente de um Discourse auto-hospedado.