【问题标题】:Is it a bad idea to use Apache HTTPD to proxy tomcat使用 Apache HTTPD 代理 tomcat 是不是一个坏主意
【发布时间】:2012-04-08 07:17:00
【问题描述】:

用 httpd 前置 tomcat 为我们解决了一个大问题。我们可以将 httpd 和 tomcat 分开到不同的机器上,即将托管 httpd 的服务器放在 DMZ 中,并将托管 tomcat 的服务器放在更安全的防火墙后面,因为它需要建立数据库连接, 这在 DMZ 内是不允许的。我们使用 AJP (mod_proxy_ajp)。

我们在生产环境中没有发现任何性能问题。但我最近碰到了以下 “无论您做什么,都应不惜一切代价避免使用 Apache HTTPD 代理您的请求,因为它会使您的性能降低近 50%。” 来自http://www.mulesoft.com/tomcat-performance

我想获得人们对该声明的专家意见。

谢谢,

【问题讨论】:

  • 我已经在一个现场网站上完成了。没有发现任何问题,但流量很低。
  • 通过代理他们可能意味着使用 Apache HTTPD 作为真正的代理,而不是 AJP 连接器 (mod_proxy)。正如 Jason 指出的那样,使用 HTTPD + Tomcat + AJP 连接器通常(至少以我的经验)是有益的,尤其是在您进行虚拟托管时。

标签: tomcat apache


【解决方案1】:

使用 Apache HTTPD 代理 tomcat 是不是一个坏主意

不,如果配置和使用正确,它实际上可以加速服务。请记住您在什么环境中使用它。可能没有必要在开发环境或内部专用网络中运行它,除非您在同一台服务器上运行不同服务的混合环境。

实际上,您可以通过 Apache 代理请求来减轻 tomcat 的大量负载。您可以设置 Apache 执行所有压缩、加密和 CA Cert 管理,同时通过 AJP 将请求代理到 tomcat。您还可以利用它使用虚拟主机和子域在同一台服务器上运行多个服务。

我们在生产环境中没有发现任何性能问题。 但我最近碰到了以下“无论你做什么,使用 应不惜一切代价避免使用 Apache HTTPD 代理您的请求,因为 它会使你的表现降低近 50%。”来自 http://www.mulesoft.com/tomcat-performance.

这完全取决于您如何设置 Apache 以及您为代理配置的协议。一些协议和模块比其他协议和模块慢。但是,由于将 AJP 与 mod_proxy 一起使用,我似乎并没有太大的退化。它工作得很好。此外,我们还使用 mod_security 来增加入侵和漏洞检测。

Apache 附带的最大优势之一是负载平衡和扩展服务的能力。

【讨论】:

  • 谢谢杰森。你们有没有用纯 Tomcat 与 httpd+ajp+tomcat 进行任何基准测试?看起来 mulesoft 的原始声明在没有详细说明或实质性证据支持的情况下提出了声明。我们确实利用了 httpd+ajp 的负载平衡能力,并且我们还使用 mod_proxy 来代理与 tomcat 实例在同一服务器上运行的 Jetty 实例上的 http 流量。
  • 您还可以从 Apache HTTPD 提供所有静态内容(html、jpg、png、js 等)。这可以防止额外的通信步骤可能发生的额外网络流量。 +1
猜你喜欢
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
  • 2011-10-21
  • 1970-01-01
  • 2019-02-01
  • 2011-02-03
  • 2010-11-29
相关资源
最近更新 更多