![根据 url 路由请求](https://linux22.com/image/1381289/%E6%A0%B9%E6%8D%AE%20url%20%E8%B7%AF%E7%94%B1%E8%AF%B7%E6%B1%82.png)
我正在设置一些将驻留在单个 IP(即 NAT)后面的服务。其中一些服务将使用相同的端口。例如,假设我将在不同的服务器 WebA 和 WebB 上托管两个不同的网站。对于外部访问者,我希望两者都使用端口 80。确定哪个服务器应该响应请求应该通过检查 url 来完成,假设我有weba.example.com
和webb.example.com
,它们应该从适当的服务器提供服务。
在工作中,我知道我们使用 F5 负载均衡器来执行此操作并构建称为“iRules”的规则。但这对我的情况来说太过分了。有哪些可用的工具可以实现此目的?我研究了 Zen Loadbalancer,因为我认为所有负载均衡器都会这样做,但似乎并非如此。
答案1
鱿鱼可以作为反向 Web 代理 它可以满足您的要求-参见具有多个后端 Web 服务器的反向代理
您可以设置路由器将端口 80 转发到 squid 服务器,并让 squid 将请求转发到不同的内部 Web 服务器。
答案2
反向代理正是您想要的,并且 Apache 支持它们。
如果 Web 应用程序大量或奇怪地使用 Javascript,您可能会遇到问题。您可能还需要更改 Web 应用程序使用的任何配置 - 有些需要被告知在创建响应页面时要返回哪个 URL 等。
这里是我以前使用过的指南。
答案3
对于 Web 服务器,您可以使用 Apache + 虚拟主机 + mod_proxy 配置为反向代理。