Tente isso. Interessado em saber se funciona. Se você tem algum cliente que não está traduzido, isso quebraria isso.
set_real_ip_from 0.0.0.0/0;
real_ip_header X-IORG-FBS-UIP;
Suas declarações set_real_ip_from e real_ip_header acima são a maneira padrão de fazer isso. A única diferença entre a sua situação e o que a maioria das pessoas tem é que você não sabe o endereço IP dos proxies. 0.0.0.0/0 significa "todo endereço IP", portanto, as declarações acima dizem "para cada solicitação, obtenha o IP do cliente para os logs do cabeçalho X-IORG-FBS-UIP". Meu palpite é se esse cabeçalho não existir, ele usará o IP real.
Na maioria dos casos, você pode obter os endereços IP dos proxies. AWS, CloudFlare, etc. Por que você não conhece os IPs de seus proxies?
Também observo que você fez uma pergunta quase idêntica há alguns meses e aceitou a resposta. Se alguém não responder à sua pergunta, não a marque como resposta.
Método alternativo solicitado - NÃO FUNCIONA
Você solicitou um método alternativo com base na presença do cabeçalho via: proxy. Eu não acredito que isso seja possível. Eu escrevi isso
if ($http_X_via:proxy) {
set_real_ip_from $remote_addr;
real_ip_header X-IORG-FBS-UIP;
}
Mas isso falha. Nginx diz que set_real_ip_from não pode entrar em um bloco if. Isso significa que você precisa conhecer seus IPs antecipadamente ou usar minha outra solução acima.