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

16

我在家里有一个24/7运行的NAS/服务器,上面运行着许多不同的服务。现在我已经拥有一个指向它的域名,并想知道是否可以创建子域名来指向不同服务的不同端口。例如:

我有一个单独的D-LINK路由器,目前将所有这些端口转发到我的NAS/服务器,其IP为192.168.0.104。

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

我需要运行什么服务或代理才能识别子域名并相应地路由流量?还是我可以使用Apache虚拟主机来处理这个问题,因为这些子域名将以端口80进入,而Apache正在监听该端口?虚拟主机是否可用于此?

任何信息、想法或提示都将非常有用。


1
我相信这是一个有效的问题,并已将其标记为需要管理员干预。它应该被重新打开。 - abalter
1个回答

23

有两种方法可以实现这一点。您可以使用httpd.conf的VirtualHost部分,也可以在您的.htaccess中进行配置(假设子域名解析到与您的Web服务器相同的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]

文档:
- 创建基于名称的虚拟主机指南
- 核心,包括VirtualHostNameVirtualHost
- 重定向
- mod_rewrite 指南


它是否实际重定向了(因为R=301似乎是永久移动的HTTP状态码)?还是显示网站内容? 在我的情况下,我想要实现第二种情况。 - AmazingTurtle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接