Как переадресовать субдомен на новый порт с тем же IP-адресом?

У меня есть NAS/Server, работающий дома 24/7 и запускающий на нем множество разных сервисов. Теперь у меня есть доменное имя, указывающее на него, и задалось вопросом, можно ли создать поддомены, указывающие на разные порты для разных служб. Например:

У меня есть один маршрутизатор D-LINK, который в настоящее время переносит все эти порты на мой NAS/сервер, чей IP-адрес 192.168.0.104.

EDIT: на сервере запущен Ubuntu 12.04.

Какую услугу или прокси-сервер мне нужно выполнить, чтобы распознать поддомен и настроить трафик? Или я могу использовать виртуальные хосты apache для этого, потому что эти поддомены будут поступать на порт 80, который слушает апач? Или виртуальные хосты не работают так?

Любая информация, идеи или советы будут полезны/полезны.

Ответы

Ответ 1

Есть два способа сделать это. Вы можете использовать раздел VirtualHost вашего httpd.conf, или вы можете сделать это в своем .htaccess. (предполагая, что субдомены разрешены на тот же IP-адрес, что и ваш веб-сервер)

В httpd.conf:

<VirtualHost *:80>
    ServerName subsonic.mydomain.com
    redirect / http://mydomain.com:4040/
</VirtualHost>

В .htaccess:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^subsonic\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://mydomain.com:4040/$1 [R=301]

Документация:
 - Руководство по созданию виртуальных хостов на основе имен
 - Core, включая VirtualHost и NameVirtualHost
 - Redirect
 - mod_rewrite guide