Reverse proxy is actually super easy with nginx. I have an nginx server at the front of my server doing the reverse proxy and an Apache server hosting some of those applications being proxied.
Basically 3 main steps:
Setup up the DNS with your hoster for each subdomain.
Setup your router to port forward for each port.
Setup nginx to do the proxy from each subdomain to each port.
DreamHost let's me manage all the records I want. I point them to the same IP as my server: