如何使用Apache将子域转发到同一IP地址上的新端口?

如何使用Apache将子域转发到同一IP地址上的新端口?,apache,dns,web,subdomain,portforwarding,Apache,Dns,Web,Subdomain,Portforwarding,我有一个NAS/服务器在家里全天候运行,并在其上运行许多不同的服务。我现在有一个域名指向它,我想知道是否有可能为不同的服务创建指向不同端口的子域。例如: -->XXX.XXX.XXX.XXX:4040 -->XXX.XXX.XXX.XXX:25565 -->XXX.XXX.XXX.XXX:4082 我有一个单独的D-LINK路由器,该路由器当前将所有这些端口转发到我的NAS/服务器,其IP为192.168.0.104 编辑:服务器正在运行Ubuntu 12.04 我需要运行什么服务或代理才能

我有一个NAS/服务器在家里全天候运行,并在其上运行许多不同的服务。我现在有一个域名指向它,我想知道是否有可能为不同的服务创建指向不同端口的子域。例如:

  • -->XXX.XXX.XXX.XXX:4040
  • -->XXX.XXX.XXX.XXX:25565
  • -->XXX.XXX.XXX.XXX:4082
我有一个单独的D-LINK路由器,该路由器当前将所有这些端口转发到我的NAS/服务器,其IP为192.168.0.104

编辑:服务器正在运行Ubuntu 12.04

我需要运行什么服务或代理才能识别子域并相应地路由流量?或者我可以使用apache虚拟主机来处理这个问题,因为这些子域将位于apache正在侦听的端口80上?或者虚拟主机不是这样工作的


任何信息、想法或提示都会很有用。

有两种方法可以做到这一点。您可以使用
httpd.conf
的VirtualHost部分,也可以在
.htaccess
中使用。(假设子域解析为与Web服务器相同的IP)

httpd.conf
中:

<VirtualHost *:80>
    ServerName subsonic.mydomain.com
    redirect / http://mydomain.com:4040/
</VirtualHost>
文档:
-
-,包括和
-

-

它实际上是重定向吗(因为R=301似乎是永久移动的http状态码)?还是显示网站的内容?在我的例子中,我想实现第二种情况。我认为这是一个有效的问题,并已将其标记为版主干预。应该重新开放。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^subsonic\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://mydomain.com:4040/$1 [R=301]