我见过很多 Web 服务器设置,其中 Apache 位于另一个 Web 服务器的前面。其中最突出的例子是 Java Web 服务器,例如 Glassfish、Tomcat 等。这样做有什么意义?我知道将 Apache 放在 Mongrel 集群前面的目的是为了实现负载平衡,但其他服务器呢?这样做的原因是什么?
答案1
Web 应用服务器擅长托管其应用程序(Ruby、Java 等),但在托管静态文件或提供负载平衡/故障转移方面不如 Apache(mod_proxy)、安全/过滤(mod_security),重写(mod_rewrite) 等。因此,使用 Apache 作为前端是很常见的,它可能提供所有静态内容,然后将请求代理到应用程序服务器(mongrel、tomcat 等)。
Apache 是经过严格审核的代码,其“使用年限”比新服务器更长,因此将其作为面向不受信任的互联网的服务器是合理的。这还意味着您可以将应用服务器放在网络内部,将 Apache 服务器放在 DMZ 中。
答案2
至于你的另一个问题 -
那么,还有一个问题:如果我要使用 Apache 后面的 Java 服务器执行此操作,我会使用多个实例吗?
视情况而定 :) 负载如何?内存使用情况如何?您将如何分配它们 - 同一台机器上的多个 Java 应用服务器?不同的机器?适当的配置取决于您要解决的问题。