Around 18 months or so I wrote a mostly-working reverse proxy in Elixir, but I relied directly on Cowboy (the underlying webserver in phoenix) -- I'm not sure that adding phoenix to the mix actually makes things substantially easier?
My advice would actually be to use one of the existing systems like nginx or haproxy, and learn their scripting techniques for customizing behavior (for example, you can write lua scripts to create custom behavior for nginx). The reason for this is that you'll find yourself spending days and days making all the basic HTTP stuff work, and then suddenly find you need to support websockets, too! And then someone will tell you they need SSE support. Repeat ad infinitum! Maintaining a proxy ends up being a full time job, so unless you're prepared for that (or you can definitively nail down the scope of what your proxy needs to support), it might be more work than it's worth.