Geralmente isso não pode ser feito assim. Quando o cliente se conecta via TCP e / ou UDP, o servidor não tem informações sobre qual domínio o cliente usou para solicitar o endereço IP do servidor.
Como você está mencionando a porta 80, pode estar falando sobre o tráfego HTTP. Nesse caso, essa distinção pode ser feita, pois o protocolo HTTP também transfere o nome de domínio selecionado. Você pode usar um servidor HTTP como o Apache e configurar um host virtual para cada domínio que atua como um proxy reverso e encaminha o tráfego para a porta correta. Uma configuração como essa poderia ser algo assim:
<VirtualHost *:80>
ServerName domain1.com
ProxyPass / http://server-ip:81/
</VirtualHost>
Para que isso funcione, os módulos proxy
e proxy_http
precisam ser ativados.