Running Multiple Publicly Accessible Web Servers on a Single IP Address

Solution 1:

This is called Reverse Proxy, you can redirect all trafic on port 80 to one Apache server, configure 3 vhost (1 per subdomain) and in the 2 vhost handling non local website use the Apache ProxyPass directive to tell apache to load content from another server.

nginx can also act as a reverse proxy. You can forward all request to nginx then nginx will load content on one the right server depending of the subdomain.

I would use the Apache proxypass feature, it's easier to setup from my point of view.
You can also start a 4th apache server that will only act as reverse proxy. In this case all of the 3 vhost will use proxypass to get content from the right server.

See http://www.raskas.be/blog/2006/04/21/reverse-proxy-of-virtual-hosts-with-apache-2/ for an example, you case is the same execpt that you have a third subdomain (so you need 1 more vhost).