Acabei de encontrar este problema com o Cloudflare quando ativei o proxy deles.
Eu corrigi alterando a configuração do Nginx. Você tem que encontrar todos os endereços IP do proxy e, para cada um na seção 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;
...
Então você pode definir o IP real do cabeçalho passado pelo Cloudflare:
real_ip_header CF-Connecting-IP;
Como os endereços IP do proxy podem mudar, precisarei automatizar a obtenção e atualização deles.
Em seguida, recarregue/reinicie o nginx com:
sv nginx reload ou sv nginx restart
Argh. Gostaria de ter visto este post mais cedo! Acabei de passar uma hora hoje recriando algo que já existia: X-Forwarded-For proxy tag not recognized by Discourse?: