Você pode ter mais de um site em execução no mesmo servidor da web, usando cabeçalhos de host / hosts virtuais . Esse é um mecanismo no qual o servidor da Web examina o nome do host fornecido pelo navegador (usado para acessar o servidor da Web) e exibe o conteúdo do site apropriado.
Você nem precisa definir portas diferentes para sites http se os definir com cabeçalhos de host exclusivos. Se você preferir ter portas diferentes, isso também é bastante fácil na maioria dos servidores da Web (você não diz qual servidor da Web está usando).
Quanto a como configurar os nomes dos sites, isso também é bastante fácil, embora não seja realmente algo relacionado ao diretório ativo, e eu não pessoalmente usaria arquivos hosts para nada diferente do teste dev em um servidor web local. Você simplesmente criaria entradas no DNS para os dois endereços de sites, apontando para o servidor da web.
Você criaria um registro "A" para o nome do host & Endereço IP do próprio servidor Web (por exemplo, mywebserver.example.com ) e, em seguida, use dois registros "CNAME" (aliases) que apontam example.com e app .example.com nesse registro. Isso informa a qualquer cliente que procure um desses dois endereços de sites no DNS para usar o endereço IP definido para o próprio servidor da Web.
atualização para editar o endereço
Não há como incluir o número da porta em um nome de host ou endereço IP. Seus usuários terão que digitar example.com:8080 e app.example.com:9090. O que você está pedindo está fora do escopo do que pode ser feito nos arquivos DNS ou hosts, porque não está relacionado à resolução nome .
As duas maneiras de contornar isso que eu posso pensar seria
-
Para criar dois servidores virtuais separados, cada um com o aplicativo instalado em um servidor da Web que atende na porta 80.
-
Instale o IIS (ou qualquer outro) na porta 80 e tenha um site para cada cabeçalho de host, como descrevi acima. Em seguida, use o redirecionamento de cada site para o "correto" que está escutando em qualquer porta.