为什么我不应该直接使用 Tomcat 来提供我的 Java webapp?

为什么我不应该直接使用 Tomcat 来提供我的 Java webapp?

我曾多次听说,不应将 Java webapp 直接通过其所运行的 Tomcat 服务器向外界提供服务。相反,应在两者之间使用常规的 Web 服务器 - 例如 Apache。为什么会这样?

答案1

最近我向我的同事(网络开发人员)问了这个问题...他说,当只有一个源(网络服务器)访问 Tomcat 时,Tomcat 的运行效率会高得多。它的扩展范围会大得多。此外,实际的网络服务器更容易配置,可以执行一些奇怪的操作,例如 URL 重写(从我们在 SF 上收到的所有 mod_rewrite 问题来看,这是一种非常常见的操作)、访问控制以及任何不像一个证书/一个站点那么简单的 SSL。

答案2

我不知道这个答案是否特定于 Java 和 Tomcat,但在我们的安全模型中,我们不会直接向互联网提供任何服务 - 我们在 DMZ 中拥有 Apache,并在单独的 DMZ 中为我们所有的应用程序服务器运行 ReverseProxy(并且它们连接到另一个 DMZ 中的我们的数据库服务器。)

除了安全性之外,它还允许您执行重定向、SSL 卸载以及 Apache 可以执行的所有其他功能。我不知道 Tomcat 是否具有所有这些功能。

答案3

Tomcat 前端的 Apache 服务器的主要用途通常是卸载静态内容诸如图片、HTML、JS、CSS 文件等文件传输到 Apache Web 服务器。只有动态请求才会被传送到 Tomcat,从而减少流量,尤其是跨防火墙时。

完整列表请参阅官方 Wiki。为什么我应该将 Apache 与 Tomcat 集成?(或者不集成)这解释了安全性、集群和速度方面的优势,然而,对于较新的 Tomcat 6 来说,性能不再像以前那样成为大问题。

相关内容