с чисто теоретической стороны, можно упростить и запустить один Apache, который будет слушать три разных порта, конфиг nginx при этом практически не изменится (вместо разных ip будут разные номера портов) - однако, это сильно упростит вам жизнь на этапе настройки - не придётся воевать ещё и с виртуалками и их сетями.
всё это можно сделать на одной машине, например:
apache-хост-1 слушает порт 8081;
apache-хост-2 слушает порт 8082;
apache-хост-3 слушает порт 8083;
nginx слушает порт 80 и проксирует запросы на три эти апстрима;
тестовый сайт - элементарно три разных папки с файлом index.html и содержимым: <h1>808x</h1>
(x заменить на соответсвующий номер)
каждый хост апача настрое на свою папку и при обращении по номеру порта в браузере будет показывать "свой" номер порта
конечный результат: при обащении через браузер на 80 порт попеременно отображаются номера портов разных апач-хостов
если отработаете этот сценарий, то разнести это всё по 4-м разным виртуалкам - задача чисто администрирования виртуалок - конфиги веб-серверов вас уже будут готовы