Entendido, então trata-se mais do que o Rails ou outras gems fazem com os cabeçalhos, e menos do que o código do Discourse faz.
É interessante que o Rails não utilize X-Real-IP, que provavelmente é menos comum do que X-Forwarded-For, mas certamente mais conhecido do que Forwarded e Client-IP
.
Provavelmente X-Real-IP está então obsoleto na configuração do Nginx. O Discourse o usa junto com X-Forwarded-For nos logs, se eu interpretei corretamente? Não consegui encontrar nenhum outro uso/menção explícito no código:
- discourse/lib/discourse_logstash_logger.rb at main · discourse/discourse · GitHub
- logster/lib/logster/message.rb at main · discourse/logster · GitHub
O trecho abaixo pareceu errado de duas formas quando o vi durante a depuração da limitação de taxa compartilhada e os erros registrados sobre o IP de cliente “unix:” inválido após a atualização do nosso Discourse (usamos um proxy de socket UNIX à frente do container e dependemos de X-Forwarded-For).
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
Mas entendo o “funciona” para tornar $remote_addr o único ponto de verdade, e real_ip_header a maneira canônica para administradores controlarem o único IP que o Discourse/Rails recebe. Vejo que já foi adicionado em Serve Discourse from a subfolder (path prefix) instead of a subdomain
.