Não estou 100% claro sobre qual é o seu objetivo, mas há um programa de proxy reverso do Unix chamado libra ( provavelmente disponível no repositório de pacotes do Ubuntu) que permitirá redirecionar solicitações HTTP para diferentes servidores de backend com base em expressões correspondentes.
Então você teria libras rodando no seu servidor Ubuntu front-end na porta 80. No back-end, você teria o Apache + Ubuntu rodando em alguma outra porta (8080, por exemplo) e o servidor Windows (s ) rodando em alguma (s) porta (s). Em seguida, você informa a libra que servidor / porta de backend para encaminhar a solicitação para cada expressão regular de domínio e / ou URL necessária para classificar as solicitações por.
Não sei por que você deseja evitar um proxy no mix, pois é exatamente isso que você precisa. Eu não acredito que você pode conseguir o que você precisa sem um. Quanto a esses proxies, a libra é bem pequena e rápida. Se é caching você deseja evitar, devido ao uso de conteúdo dinâmico, libra não faz qualquer cache.