如何将子域转发到特定端口?

如何将子域转发到特定端口?

如果之前有人问过这个问题,我深表歉意。我还没有找到合适的解决方案所以...是的。

当访问特定域“example.com”时,我希望它能够正常运行。换句话说,它应该按预期转到端口 80 并与 Apache 交互。

当访问不同的子域“mc.example.com”时,我不希望它访问 Apache Web 服务器。我希望它与不同的程序交互,监听端口 4096。因此,访问“mc.example.com”将具有与“example.com:4096”相同/相似的功能。该服务是我的世界

当访问第三个子域“vpn.example.com”时,我希望它与不同的服务交互,监听端口 687。该服务是 openVPN

有没有一种简单的方法可以做到这一点?如果是这样,那是什么?它是否涉及在 Apache 中配置 VirtualBox(我尝试过但惨败的方法。xD)?或者可以使用 ipTables 来完成吗?如果这意味着什么的话,我正在运行 32 位 Centos 5.5(我相信。它是 Centos 的最新版本)

答案1

这是任何事情都办不到的。当远程计算机打开 TCP 连接时,它只会告诉您它想要连接的 IP 地址和端口号。它不会告诉您它在 DNS 中查找哪个主机名来获取该 IP 地址。 (基于名称的虚拟主机使用Host:作为 HTTP 协议一部分发送的标头,但这是在连接打开之后发送的。)

但是,如果您正在访问不同的服务,远程计算机应该要求连接到不同的端口号,并且您应该能够基于该端口号进行路由。

如果所有这些程序都使用 HTTP,那么您应该能够根据标Host:头将主 Web 服务器代理请求发送到适当的服务器。

答案2

我知道这是一个老问题,但也许有一个解决方案:我找到了 vhost @ work 的配置:在虚拟主机配置中尝试这个:(我不是 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

相关内容