我有兴趣运行一个反向代理,它后面有 2-3 个虚拟机。每个内部服务器将运行多个虚拟主机,而不是在代理上手动配置每个单独的虚拟主机(各种虚拟主机来来去去太频繁了,这不实用),我想使用一些可以在顺序查找合适的后端服务器。例如:
Server 1: *.dev.mysite.com
Server 2: *.stage.mysite.com
Server 3: *.mysite.com, dev.mysite.com, stage.mysite.com, mysite.com
Server 4: *
在上面的配置中,task.dev.mysite.com 将转到服务器 1,dev.mysite.com 将转到服务器 3,yoursite.stage.mysite.com 将转到服务器 2,www.mysite.com 将转到服务器 3,并且yoursite.com 到服务器 4。
到目前为止,我已经研究过使用 Squid、Varnish 和 nginx。我对它们各自的可取性和一般适用性有自己的看法,但如果它们中的任何一个能够以这种方式处理动态服务器选择并且不需要每个虚拟主机配置,则不是很明显。另一方面,Apache 可以方便而简单地做到这一点,但除此之外(除了众所周知和熟悉之外)似乎非常不适合部分性能服务任务。
性能实际上还不是一个主要问题,但如果另一个系统性能好得多并且还可以处理所需的“免提”配置,那么使用 Apache 似乎是愚蠢的。但是,经常需要为所有生产服务调整网关,并冒着全网中断的风险……如果 Apache 成为一个太小的瓶颈,那么以后也会为自己设置更长的停机时间。
这些(或其他)反向代理中的哪一个可以做到/会做得最好?
也许我应该将其作为一个单独的问题发布,但如果 Apache 是唯一可行的选择,那么 apache2.2(Ubuntu 12.04.1)中的 apache-mpm-event 的安全/可靠/可预测性如何,特别是对于专用反向代理?据我了解,从 2.4 开始,Event MPM 被宣布为“安全”,但尚不清楚在 2.4 中达到稳定性是否对各种发行版的官方/稳定包渠道中可用的旧 (2.2) 版本有任何影响。
就个人而言,我使用Pound。我会更详细地介绍这个问题,因为它是一个购物问题,所以很快就会被关闭。
我重新设计了大部分前端服务器以通过一些 Pound 反向代理,这让我大大降低了 SSL 证书成本和 IP 使用率。
我已经让它们运行了大约 9 个月,没有出现任何问题,因此我可以保证其可靠性。
您还可以按照您想要的方式在设置中进行通配符匹配:
如果这是你想做的,清漆绝对可以做到这一点。
您在 vcl 文件中定义后端,然后在 vcl_recv 中您可以使用一些正则表达式,如下所示:
我个人不建议使用相同的清漆服务器进行暂存和生产,我至少会在另一个端口上运行一个单独的实例,但这既不在这里也不在那里。