Cómo solucionar que todo el tráfico aparezca como proveniente del servidor de Cloudflare en lugar de la IP del navegador del usuario

Al usar 1panel para desplegar Discourse en un contenedor y configurar un sitio web mediante un proxy inverso, ¿cómo puedo solucionar el problema de que todo el tráfico aparezca como proveniente de los servidores de Cloudflare en lugar de la IP real del navegador del usuario, después de haber configurado el dominio con Cloudflare CDN?

Quieres usar la plantilla de Cloudflare en tu app.yml.

2 Me gusta

Lo intenté, pero no funciona :rofl:. La razón del fallo podría ser que lo despliegué en un contenedor de 1panel y utilicé un proxy inverso.

¿Puedes editar directamente el archivo de configuración de nginx? De ser así, realiza los cambios sugeridos aquí. Ahora, tras recargar el servicio de nginx, debería funcionar. ¡Espero que esto ayude!

1 me gusta

¿Tienes curiosidad sobre las razones para ejecutar dos proxies inversos? Uno en la empresa de alojamiento y CloudFlare. ¿Hay una razón técnica?

1 me gusta

Estoy ejecutando Discourse en contenedores mediante el panel de gestión de servidores 1Panel (código abierto), lo cual facilita la administración del servidor.

La arquitectura de 1Panel es: Usuario -> Cloudflare -> Nginx de 1Panel -> Contenedor de Discourse.

Mi entendimiento es que, incluso si modifico la configuración de app.yml de Discourse, el Nginx de 1Panel sigue situándose entre Cloudflare y Discourse.

Así que es una restricción técnica introducida por 1panel.

¿Estás ejecutando varios servidores o solo Discourse en el VPS? Si solo estás ejecutando Discourse, probablemente no necesites 1panel. A menos que haya una razón técnica por la que necesites 1panel.

Mi Discourse está instalado de forma nativa en un VPS detrás de Cloudflare. Esta configuración funciona.

Además de Discourse, está OpenClaw :grinning_face:

1 me gusta

Casi con total seguridad.

¿Es la IP que estás viendo la IP del contenedor de 1panel?

Al usar el administrador para ver usuarios, la última dirección IP utilizada muestra la dirección IP de Cloudflare.

¿Has implementado esto?

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 es la solución para que Apache utilice la IP del usuario final en lugar de la dirección IP de Cloudflare.

1 me gusta

Gracias, estoy usando nginx. He revisado algunos tutoriales que configuran el archivo de configuración de nginx del host para el proxy inverso. Lo probaré cuando tenga tiempo.

¿Instalaste la plantilla de Cloudflare como se sugirió? Si no, ¿por qué estás pidiendo ayuda aquí?

¿Plantillas de Cloudflare? Ya he modificado el archivo de configuración yml y activado la plantilla de Cloudflare. Sin embargo, estoy ejecutando Discourse en contenedores a través de 1Panel (la arquitectura de 1Panel es: Usuario → Cloudflare → Nginx de 1Panel → Contenedor de Discourse). Solo cambiar el archivo yml no es suficiente; también debo modificar el archivo de configuración del proxy inverso de Nginx dentro de 1Panel. Por ahora no tengo tiempo para hacerlo.

Parece que necesitas modificar la instancia de nginx de 1Panel para aprovechar su funcionalidad real_ip en las solicitudes de los usuarios. Cloudflare envía esta información junto con la cabecera CF-Connecting-IP, y puedes utilizar esa cabecera para indicarle a nginx cómo comportarse.

Probablemente valga la pena crear una automatización basada en scripts para descargar periódicamente las listas de direcciones proxy de Cloudflare (IPv4, IPv6) y mantener actualizados los rangos real_ip de tu nginx.

Si no tienes acceso a tu archivo nginx.conf de 1Panel, probablemente no haya mucho que puedas hacer. La combinación de real_ip de nginx con la cabecera CF-Connecting-IP de Cloudflare es la solución prevista para este problema cuando gestionas tu propio proxy inverso frente a un Discourse autoalojado.

3 Me gusta