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