There are a number of options, but all will be variants of reverse proxying which is a technology. Apache can do this by using mod_proxy (and that is the way I would do it, but you can also get other reverse proxy servers).
Another option would be to forgo the difficulties associated with reverse proxying on the router/VM host and simply have each site on a differen port, and use the router to redirect the traffic as appropriate. The downside of this approach would be that the second site would need a url like http://site.name:81 to reach it externally.
Lastly, its unclear why you want to spin up a second VM for the second site - the easiest way to this whole thing would be to simply keep the current single VM with Apache, and then use name based virtual hosting to host 2 websites of the single VM. Its quite straightforward to have multiple insances of Wordpress on a single install of apache, each in its own Virtualhost, and more resource efficient as well.