这是我的设置:
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 设置,其中一个虚拟主机是另一台机器的反向代理,所以基本理论是正确的。