真的有必要运行 Apache 作为 Glassfish/JBoss/Tomcat 的前端吗?

Caf*_*oma 15 tomcat glassfish apache-2.2

我主要是一名 Java 开发人员,我向您提出了一个跨越开发人员和系统管理员之间鸿沟的问题。

多年前,当将 Tomcat 作为应用程序服务器运行是一件新鲜事时,习惯上将 Apache 置于前端。据我了解,这样做是因为:

  1. Java 被认为是“慢”的,让 Apache 直接提供静态内容是有帮助的。
  2. 除非以 root 身份运行,否则 Tomcat 无法侦听端口 80/443,这很危险。

Java 不再被认为是缓慢的,我怀疑将 Apache 添加到组合中是否真的有助于加快速度。

至于端口问题,如今可能有更简单的方法将应用服务器连接到端口 80/443。

所以我的问题是——这些天用 Apache 前端 Java Webapps 真的有什么好处吗?如果是这样,Apache 仍然是要走的路吗?我应该看看 Nginx 吗?如果这很重要,我使用的是 Glassfish 而不是 Tomcat。

Ada*_*ent 9

大多数人会说你需要一些东西,因为静态文件。

这有点愚蠢,因为:

  • 您可以将 Tomcat 配置为使用与带有 APR 的 apache 相同的 IO
  • 无论如何,您应该使用 CDN(内容交付网络)。

你需要在 tomcat/jetty/jboss 前面的东西来负载平衡和处理故障转移的真正原因。

我建议你不要听“ ......Tomcat 引擎是整个生态圈的致命弱点...... ”,因为我们都知道这不是真的......你的数据库及其连接池就是这样。


Tim*_*unk 6

这取决于您的应用程序周围的生态系统。在 Intranet 环境中 - 您可能不需要 Tomcat 前面的任何东西。

如果单独在互联网上作为面向公众的服务,那就要看情况了。Apache 很好,因为它提供了像 mod_security 这样的模块。但是,如果您不了解 apache(或 ngix)的配置,那么您可能会因配置错误而面临更多攻击或故障点。

在您需要升级 web 应用程序并等待重新启动的情况下,前面的 Apache 可用于提供中断页面。但是,如果重新启动很少见或者它们的时间正确 - 那么这是使 Tomcat 独立的另一个原因。

Tomcat FAQ 也谈到了这一点,它解决了一些额外的问题:http : //wiki.apache.org/tomcat/FAQ/Connectors#Q3