The scenario I have in mind is to somehow involve a third VM which will receive the 80/443 requests from the outside world and redirect them accordingly to the VMs.
Você definitivamente está olhando para o caminho certo. Pessoalmente, eu usaria algo como HAProxy para atingir seu objetivo. A implementação real dependeria de suas necessidades / ambiente.
A forma mais simples seria usar um conjunto diferente de portas para um servidor (como 1080/1443) e redirecionar o tráfego de acordo. Isso pode ser feito em praticamente qualquer servidor proxy ou gateway de roteador / NAT.
Usando o HAProxy ou software similar, você pode ficar tão complicado quanto quiser. Alguns exemplos de como você pode designar tráfego para ir para um servidor ou outro:
- URL usada na solicitação (por exemplo, solicitações de / app1 / o que for para o servidor 1, padrão para o servidor 2)
- IP de origem que faz a solicitação
- Tipo de arquivo sendo solicitado (todas as solicitações de arquivos .php vão para o servidor 2)
- Agente do usuário fazendo a solicitação (todo o tráfego do iPhone vai para o servidor 2)
- Praticamente qualquer outro aspecto dos cabeçalhos que você usa
- Uma combinação de qualquer ou todos os itens acima
Existem muitos artigos e tutoriais sobre o uso de HAProxy para fazer muitas coisas (incluindo aqui em vários SE sites). Por exemplo, aqui está uma postagem simples sobre roteamento de tráfego com base em URLs . Ou um exemplo em ServerFault que é baseado em IP de origem . O Google será seu amigo quando encontrar exemplos do que você pode fazer.
Sugiro que verifique a documentação para tudo o que você puder fazer.