Para evitar que os clientes falsifiquem os cabeçalhos de um proxy, tanto X-Forwarded-For
quanto Client-Ip
precisam ser iguais para não gerar esse tipo de erro.
Basta definir o cabeçalho Client-Ip
na sua configuração nginx :
Quanto aos endereços IP em seu log:
-
192.168.255.5
provavelmente é o IP interno do NodeBalancer (exemplos em Linode Library mostram192.168.0.0/16
subnet como de costume; isso deve ser estático - ou pelo menos manter dentro da sub-rede) -
136.160.88.153
é o endereço remoto real que você deseja conhecer -
10.16.81.184
é algum outro endereço IP desconhecido - talvez outro proxy o tenha adicionado anteriormente
(aparece em cada pedido ou às vezes está vazio?)
Me desculpe, eu de alguma forma achei que (o seu) nginx estaria rodando no NodeBalancer .
Use o HttpRealIpModule
assim:
# trust connections from internal addresses
set_real_ip_from 192.168.0.0/16;
real_ip_header X-Forwarded-For;
Ou, pelo menos, certifique-se de passar o cabeçalho original X-Forwarded-For
para o Rails em vez do modificado pelo nginx , e desmarque a Client-Ip
(de onde quer que venha):
proxy_set_header X-Forwarded-For $http_x_forwarded_for;
proxy_set_header Client-Ip "";