Чтобы ответить на ваш второй вопрос "возможно ли использовать какой-то виртуальный хост, прослушивающий порт 80":
Да, есть, и он называется виртуальным хостингом и обрабатывается большинством современных веб-серверов. Но тогда все запросы от вашего приложения должны начинаться с протокола HTTP 1.1, где указан хост. Ваше приложение, вероятно, должно быть приложением CGI. Но это, вероятно, не то, что вы хотите.
Другой способ - позволить вашему приложению контролировать порт 80 и перенаправлять все http-запросы на веб-сервер. Это грязно, и если ваше приложение не работает, веб-сервер тоже.
Решение состоит в том, чтобы иметь более одного IP-адреса на вашем сервере (вы можете привязать более одного ip-адреса на один ник). Затем вы можете привязать mydomain.com:80 по адресу 1 к веб-серверу и myapp.mydomain.com по адресу 2 к приложению, но они все еще находятся на одном сервере.
И чтобы ответить на ваш первый вопрос: «есть ли причина, по которой я не должен запускать серверное программное обеспечение на порту 80»:
Да, это плохая практика. Ожидайте получить много http-запросов от автоматического сканирования. Вы можете ответить на них с правильным http-заголовком или игнорировать их.