У меня нет хорошего способа протестировать это прямо сейчас, но...
Я полагаю, что можно использовать iptables
переводить каждый порт в единственный порт. Это было бы что-то как следующее:
iptables -t nat -I PREROUTING -m multiport -sports 0:65535 -J DNAT --to-destination 127.0.0.1:1024
Это должно перенаправить все входящие порты к 1 024. Можно затем запустить сервер на 1 024.
Это не может быть сделано ничем. То, когда удаленный компьютер открывает соединение TCP, все, что он говорит Вам, является IP-адресом и номером порта, с которым он хочет соединиться. Это не говорит Вам, какое имя хоста это искало в DNS для получения того IP-адреса. (Основанный на имени виртуальный хостинг использует Host:
заголовок, который это отправляется как часть протокола HTTP, но это после соединения, открыт.)
Но если Вы получаете доступ к другому сервису, удаленный компьютер должен просить соединяться с другим номером порта, и необходимо смочь направить на основе этого.
Если все эти программы говорят HTTP, то необходимо смочь иметь основные запросы прокси веб-сервера к соответствующему серверу на основе Host:
заголовок.
Я знаю, что это старый вопрос, но, возможно, есть решение: Я нашел конфигурацию vhost @ work: Попробуйте это в конфигурации virtualhost: ( Я не на 100% уверен, что это сработает! :) )
Кто-нибудь может это подтвердить?
<VirtualHost *:80>
ServerName sub.domain.com
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests Off
ProxyPass / http://sub.domain.com:12345/
ProxyPassReverse / http://sub.domain.com:12345/
#... etc