Acabo de encontrar este problema con Cloudflare cuando activé su proxy.
Lo solucioné cambiando la configuración de Nginx. Tienes que encontrar todas las direcciones IP del proxy y para cada una en la sección http:
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
...
Luego puedes establecer la IP real desde la cabecera pasada por Cloudflare:
real_ip_header CF-Connecting-IP;
Dado que las direcciones IP del proxy podrían cambiar, necesitaré automatizar la obtención y actualización de estas.
Luego recarga/reinicia nginx con:
sv nginx reload o sv nginx restart
¡Argh! ¡Ojalá hubiera visto esta publicación antes! Acabo de pasar una hora hoy recreando algo que ya existía: ¿La etiqueta del proxy X-Forwarded-For no es reconocida por Discourse?: