根据主机名进行反向代理重定向

根据主机名进行反向代理重定向

这是我的设置:

Windows Server(2003)接收 *.mydomain.com 的所有流量,它(到目前为止)将所有传入的端口 80 流量重定向到 Linux VM(使用 VMWare 虚拟网络管理器)。

我现在需要使用 IIS6 在此服务器上设置另一个网站来处理 subdomain1.mydomain.com。

我如何分离 HTTP 流量:

  subdomain1.mydomain.com -> IIS
  everything else (*.mydomain.com, domain.com, raw IP) -> Linux VM

我考虑在 Windows 上设置一个 Apache 服务器作为反向代理。但是可以ProxyPass处理主机名吗?(我看到的所有示例都处理目录)。

还有其他/更简单的解决方案吗?有lighttpd帮助吗?

TIA 感谢您的帮助。

[FWIW:更改架构不是一种选择。否则我不会问 ;-)。如果有帮助的话,一个可接受的选项是设置第二个公共 IP(但我表示怀疑)]

答案1

您可以在 Apache 中设置 VirtualHosts,然后使用 ProxyPass 将 subdomain1.mydomain.com 反向代理到 IIS,并使用默认 VirtualHost 将反向代理到您的 Linux VM。

您可能想要类似这样的配置:

<Virtualhost *:80>

    ServerName subdomain1.mydomain.com

    ....
    # Reverse proxy into IIS
    ProxyRequests off
    ProxyPass / http://ip.of.IIS.machine/
    ProxyPassReverse / http://ip.of.IIS.machine/
</VirtualHost>

<VirtualHost _default_:80>
    ....
    ProxyRequests off
    ProxyPass / http://ip.of.linux.machine/
    ProxyPassReverse / http://ip.of.linux.machine/        
</VirtualHost>

这些配置缺少大部分配置,但重要的是第一个 VirtualHost 定义与 subdomain1.mydomain.com 匹配,然后这会将反向代理到 IIS 计算机。第二个定义与其他所有内容匹配,并将反向代理到 Linux 计算机。

请注意,我没有按照上面的内容进行测试,但我确实有一个具有多个虚拟主机的 apache 设置,其中一个虚拟主机是另一台机器的反向代理,所以基本理论是正确的。

相关内容