I don't know what has changed on the back end but I have found this which seems to explain the issue:
In same-zone Worker subrequests, the value of CF-Connecting-IP reflects the value of x-real-ip (the client's IP). x-real-ip can be altered by the user in their Worker script.
In cross-zone subrequests from one Cloudflare zone to another Cloudflare zone, the CF-Connecting-IP value will be set to the Worker client IP address '2a06:98c0:3600::103' for security reasons.
When no Worker subrequest is triggered, cf-connecting-ip reflects the client's IP address and the x-real-ip header is stripped.
I don't know what has changed on the back end but I have found this which seems to explain the issue:
In same-zone Worker subrequests, the value of
CF-Connecting-IPreflects the value ofx-real-ip(the client's IP).x-real-ipcan be altered by the user in their Worker script.In cross-zone subrequests from one Cloudflare zone to another Cloudflare zone, the
CF-Connecting-IPvalue will be set to the Worker client IP address '2a06:98c0:3600::103' for security reasons.When no Worker subrequest is triggered,
cf-connecting-ipreflects the client's IP address and thex-real-ipheader is stripped.