Как разграничить ресурсы на сервере по имени поддомена?
web сервер, виртуальные хосты.
Разносить по портам не обязательно.
К примеру чтобы по запросу по 80 порту к git.myhost.ru запрос шел на 192.168.0.1:3000 а запрос mart.myhost.ru шел на 192.168.0.1:3001
Смотря чем ты будешь заходить по указанным адресам. Если браузером и HTTP (т.к. 80 порт), то тебе надо поднимать Apache и настраивать виртуальные хосты, для того чтобы web - server делал редирект в зависимости от того, какой домен запрошен. 
Если чем то другим - то надо в любом случае прописывать маршрутизацию, но стандартные правила маршрутизации подразумевают, что ты будешь всетакие обращаться по IP, т.е. если идет запрос на твой внешний IP 123.123.123.123:80, то маршутизатор передает запрос на 192.168.0.1:3000, а если 123.123.123.123:81 - то на 192.168.0.1:3001
Это может реализовать какой то продвинутый роутер вроде Mikrotik (или любой с OpenWRT или RouterOS) или LinuxServer + ПроксиСервер, но это какие то все экзотические настройки сети, нужно будет поковыряться с настройками.