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

时间:2012-10-03 19:09:49

标签: apache dns web subdomain portforwarding

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

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

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

我需要运行哪些服务或代理才能识别子域并相应地路由流量?或者我可以使用apache虚拟主机来处理这个,因为这些子域将进入端口80,apache正在监听?或虚拟主机不能像这样工作?

任何信息,想法或提示都会有所帮助/有用。

1 个答案:

答案 0 :(得分:22)

有两种方法可以做到这一点。您可以使用httpd.conf的VirtualHost部分,也可以在.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]

文档:
  - Guide to creating name-based virtual hosts
  - Core,包括VirtualHostNameVirtualHost   - Redirect
  - mod_rewrite guide