Вообще-то так обычно и делают. Размещают прокси типа nginx, который перенаправляет запросы на внутренние/внешние сайты, виртуалки и контейнеры. И сам прокси тоже может жить и в контейнере и в виртуалке.
Если все сделано в рамках одной системы, и не заморачиваться с контейнерами-виртуалками, то nginx вешается на 80-й порт, а остальные сайты сидят на других портах типа 8000-9000 и т.д. Причем обычно они вешаются на локалхост.
И да, можно и VPN поднять.
Я обычно ставлю все в контейнеры или виртуалки. И управлять проще и разносить впоследствии на кучу серверов, и безопасность повышается, если взломают один сервис-контейнер-виртуалку, то другие не пострадают. Да и бекапить гораздо проще.