I'll freely admit that the most likely scenario is that I'm just dumb, and like I say its been a long time since I tried it, but re: uri_for and friends I feel like I remember it working but then my chains being busted because they choke on the prefix of the endpoint and/or other weird stuff. And OP has an example of stuff not working in Mojolicious in this very node, no?
So I've ended up with a convention (that at this point I've cargo-culted from myself), using OPs example, like:
ProxyPass /rules http://localhost:3000/rules keepalive=On
ProxyPassReverse /rules http://localhost:3000/rules