Se você está acessando os serviços via HTTP (ou seja, em um navegador da Web diretamente, em vez de um plug-in ou algum outro aplicativo cliente), pode fazer isso usando algo como nginx como proxy reverso - ele pode escolher para onde enviar cada solicite proxies para dependendo da linha de cabeçalho "host" de entrada (por ter uma diretiva "servidor" para cada subdomínio com suas próprias configurações de passagem de proxy).
Você não seria capaz de fazer isso em seu roteador, a menos que esteja executando algum firmware personalizado que execute (ou permita que você instale) um programa como o nginx que pode atuar como um proxy reverso como este, mas se você portar encaminhar o TCP80 para uma máquina rodando nginx, então a técnica funcionará.
link dá um exemplo de configuração para o nginx como um proxy reverso (haverá muitos outros exemplos se você preciso de mais). Muitos outros servidores da Web ou quaisquer aplicativos projetados especificamente para fornecer serviços de proxy reverso devem ser capazes de fazer isso para você. O Apache pode se você tiver o mod_proxy (que o IIRC geralmente está presente mas não é carregado por padrão). IIRC IIS não pode sem add-ons de 3ª parte (o que pode custar), mas existem versões do Windows da maioria das ferramentas de código aberto que podem fazer o trabalho, então você ainda pode usá-las um ambiente totalmente Windows.