Gestionar la "cadena de confianza" de la IP real del usuario final

Entendido, así que se trata más de lo que Rails u otras gemas hacen con los encabezados, y menos de lo que hace el código de Discourse.

Es interesante que Rails no utilice X-Real-IP, que probablemente sea menos común que X-Forwarded-For, pero sin duda más conocido que Forwarded y Client-IP :thinking:.

Probablemente X-Real-IP sea entonces obsoleto en la configuración de Nginx. ¿Discourse lo expande y usa junto con X-Forwarded-For en los registros, si lo interpreto correctamente? No pude encontrar ningún otro uso/mención explícito en el código:

Lo siguiente simplemente me pareció incorrecto de dos maneras cuando lo vi mientras depuraba la limitación de tasa compartida y registraba errores sobre la dirección IP de cliente «unix:» no válida después de nuestra actualización de Discourse (usamos un proxy de socket UNIX delante del contenedor y confiamos en X-Forwarded-For).

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;

Pero entiendo el «funciona» para hacer de $remote_addr el único punto de verdad, y real_ip_header la forma canónica para que los administradores controlen la única dirección IP que Discourse/Rails recibe. Veo que ya se añadió a Serve Discourse from a subfolder (path prefix) instead of a subdomain :+1:.