Тогда я подумал, что с помощью nginx я могу перенаправить субдомены на виртуальные машины
Да, именно так работает функция обратного прокси в nginx.
На хост-сервере определите server { … }
блоки для всех ваших поддоменов. Вместо указания корневого пути документа используйте proxy_pass
указатель nginx для каждой из ваших виртуальных машин. (Виртуальные машины должны использовать только хост или мостовые сети.)
Для вашего примера вы можете использовать:
server { server_name www.mysite.com; listen *:80; listen [::]:80; location / { proxy_pass http://10.8.0.10; } } server { server_name api.mysite.com; listen *:80; listen [::]:80; location / { proxy_pass http://10.8.0.20; } } etc.