Sugerencia para plantilla de Cloudflare para obtener la IP real de los usuarios

Hola a todos,

Acabo de descubrir de la manera difícil la configuración real_ip_header CF-Connecting-IP; de Cloudflare en nginx…

Tengo una configuración bastante complicada con nginx proxy manager dentro de su propia imagen de Docker (estoy usando SWAG de linuxserver.io, que es increíble, por cierto), por lo que la ruta de conexión se ve así:
Usuario -> Cloudflare -> Servidor (1er contenedor Docker: Nginx -> 2do contenedor Docker: Discourse)

Tengo ambos contenedores Docker en la misma red Docker, por lo que se comunican; eso está bien.
Tuve un problema real al intentar obtener la IP de origen del usuario en los registros de Discourse. Leí todos los buenos hilos aquí y agregué la plantilla de Cloudflare a mi archivo app.yml, pero aún así no funcionó…

Después de arrancarme los pelos, me di cuenta de que el problema no era la plantilla de Cloudflare en sí, sino el hecho de que el contenedor de Discourse estaba obteniendo la dirección IP del contenedor de NGINX y tuve que agregar el CIDR de la red Docker a set_real_ip_from de esta manera:
set_real_ip_from 172.18.0.0/16;

Para ayudar a futuros hosts, ¿sería posible agregar esta línea a la plantilla de Cloudflare? El rango de IP 172.18.0.0/16 es privado de todos modos, por lo que incluso si no tienes NPM en un contenedor Docker, no hará daño agregar este rango.

Mi sugerencia sería cambiar esta línea en cloudflare.template.yml:
sed -i \"/sendfile on;/a $CONTENTS\\nreal_ip_header CF-Connecting-IP;\" /etc/nginx/conf.d/discourse.conf
a esta línea:
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

¿Qué opinas?

Hay una gran cantidad de temas sobre el uso de un proxy inverso que incluyen cómo hacerlo. No todos los que usan Cloudflare usan un proxy inverso.

Sin embargo, una plantilla de proxy inverso podría ser útil, ya que tengo que buscarla cada vez que la configuro sin mis scripts.

Correcto. Y lo inverso también es cierto: no todo el que usa un proxy inverso usa cloudflare :wink:

Esta sugerencia está realmente destinada a facilitar la vida de las personas que usan cloudflare. No cambiaría nada para aquellos que no usan un proxy inverso en docker, pero podría ahorrarles horas de búsqueda de la respuesta a un problema simple.

1 me gusta

Las personas que usan cloudflare probablemente tengan una vida difícil. Puedes buscar aquí y encontrar muchos ejemplos de cómo. Instalar la plantilla es solo una parte de los problemas que podrías tener, y la más fácil de solucionar. (Te recomendaría que uses una CDN real como bunny.net que es barata, pero no gratis, y fácil de configurar, pero eso no es lo que pediste).

Por supuesto, tu problema no tuvo nada que ver con cloudflare, sino con el proxy inverso, ¡así que buscar cloudflare probablemente no te sirvió de nada!

Aún así, agregar algunas plantillas más como la de proxy inverso (y la que realmente quiero, una para precompilar activos y enviarlos a S3) es una buena idea.

Buena suerte.

1 me gusta