Sim, isso pode ser feito, desde que o protocolo em nível de aplicativo em uso saiba com qual nome estava conectado. O HTTP sabe disso, devido ao cabeçalho Host:
. O TLS sabe disso (agora), por causa da extensão "Server Name Indication". Eu acredito que o FTP pode saber disso, com base em alguma extensão de protocolo, mas se você ainda estiver usando o FTP, estará condenado.
Se o protocolo não tiver a capacidade de indicar qual nome foi usado, você não poderá fazer isso, porque todo o servidor sabe quando uma conexão é feita é o IP de origem e destino / port estão envolvidos. Tudo o resto precisa passar em um nível mais alto.
Um ponto sobre a implementação proposta: você precisará ter um serviço único atendendo na porta que recebe as conexões, analisa os dados de entrada o suficiente para determinar qual nome foi solicitado , e então (e somente ) pode encaminhar a solicitação para diferentes instâncias do aplicativo para processamento. Se essas instâncias forem processos separados, então alguns meios de comunicar a solicitação ao backend que a manipulará (como proxy, ou, se você estiver lidando com um design de protocolo realmente bom, handoff de soquete) , mas se você implementar os vários manipuladores no mesmo processo (digamos, com módulos de configuração ou dinamicamente carregáveis), então você pode simplesmente criar uma estrutura de dados com a solicitação e passá-la para o que quiser lidar com ela.