我见过很多的web服务器设置,Apache在另一个web服务器的前面。 这些最显着的例子是Java的Web服务器,例如Glassfish,Tomcat等。这是什么意思? 我意识到把Apache放在前面,例如Mongrel集群是负载均衡,但其他服务器呢? 这样做的原因是什么?
Web应用程序服务器擅长托pipe他们的应用程序(Ruby,Java等),但不如Apache托pipe静态文件,或提供负载均衡/故障转移( mod_proxy ),安全/过滤( mod_security ),重写( mod_rewrite )等因此使用Apache作为前端是很常见的,可能服务于所有的静态内容,然后代理请求到应用服务器(mongrel,tomcat等)。
Apache是一个经过审计的代码块,比起较新的服务器来说,已经“一直处于封锁状态”,因此将它作为面向不可信互联网的服务器是有道理的。 这也意味着你可以把你的应用程序服务器放到你的networking中,把你的Apache服务器放到你的DMZ中。
至于你的其他问题 –
另一个问题是:如果我要在Apache背后使用Java服务器,我会使用多个实例吗?
取决于:)什么是负载? 内存使用情况如何? 你将如何分配它们 – 在同一个盒子上的多个Java应用程序服务器? 不同的盒子? 适当的configuration取决于你想解决的问题是什么。