Exactly - you will note that on compromised systems, the IP logged was 127.0.0.1 - ie localhost. NGINX as a REVERSE PROXY (and any other reverse proxy ) will by design drop the HTTP connection and re-create their own to the backend server. That is the key advantage of them - the proxy creates the connection, not the original client. A transparent proxy WILL forward contents without modifying as an example of what we don't want...
So yes, we do actually want the remote IP details, but we don't want it from the header, we want it from the IP layer connection - and this is what X-Real-IP does. This then gets added by NGINX to it's newly created header as the X-Real-IP - otherwise we would just get the reverse proxy source IP address as you say.