apache 到 tomcat:mod_jk 与 mod_proxy

Posted

技术标签:

【中文标题】apache 到 tomcat:mod_jk 与 mod_proxy【英文标题】:apache to tomcat: mod_jk vs mod_proxy 【发布时间】:2010-11-08 02:09:50 【问题描述】:

使用mod_jkmod_proxy 将tomcat 实例与apache 一起使用有哪些优点和缺点?

多年来,我一直在生产中使用 mod_jk,但我听说这是面对 tomcat 的“老方法”。我应该考虑改变吗?会有什么好处吗?

【问题讨论】:

我们在使用所有mod_proxy_* 变体时遇到了更多麻烦,并且在生产环境中成功使用了mod_jk,对于Tomcat(5.5、6、7)和JBoss/WildFly。 【参考方案1】:

这些模块的优缺点比较存在于http://blog.jboss.org/

mod_proxy

* Pros:
      o No need for a separate module compilation and maintenance. mod_proxy,
        mod_proxy_http, mod_proxy_ajp and mod_proxy_balancer comes as part of 
        standard Apache 2.2+ distribution
      o Ability to use http https or AJP protocols, even within the same 
        balancer.
* Cons:
      o mod_proxy_ajp does not support large 8K+ packet sizes.
      o Basic load balancer
      o Does not support Domain model clustering

mod_jk

* Pros:
      o Advanced load balancer
      o Advanced node failure detection
      o Support for large AJP packet sizes
* Cons:
      o Need to build and maintain a separate module

【讨论】:

如果您使用 Apache 2.0 会怎样? 我觉得这篇博文 tomcatexpert.com/blog/2010/06/16/… 很有帮助。 @yura - 这可能取决于您的操作系统版本。 Centos 7.x 似乎没有可用的模块,并且在 apache 2.4 中默认不可用:httpd.apache.org/docs/2.4/mod 具体参见@daniel-serodio 引用的wiki.apache.org/tomcat/FAQ/Connectors#Q7... 我在哪里可以下载我的连接器的二进制分发版?您不能:您需要下载源代码并针对您的平台进行编译。 在某些环境中加密很重要。 AJP 根本无法加密,而 mod_proxy 可以切换到 https。【参考方案2】:

如果您希望留在 Apache 领域,您也可以尝试更新的 mod_proxy_ajp,它使用 AJP 协议与 Tomcat 通信,而不是普通的旧 HTTP,但它利用 mod_proxy 来完成工作。

【讨论】:

谢谢。但是你知道 proxy_ajp 比 jk 能提供什么吗? 是的,mod_proxy 的所有控件和(相对)易于配置,具有 AJP 协议的速度优势(而不是使用 HTTP) AJP 使用二进制格式,因此理论上它应该提供更好的性能。不过,我从未对 AJP 与 HTTP 代理进行性能测试。【参考方案3】:

AJP 与 HTTP

当使用mod_jk 时,您使用的是AJP。使用mod_proxy 时,您将使用HTTPHTTPS。这就是本质上的不同之处。

Apache JServ 协议 (AJP)

Apache JServ 协议 (AJP) 是一种二进制协议,可以将来自 Web 服务器的入站请求代理到位于 Web 服务器后面的应用程序服务器。 AJP 是一种高度受信任的协议,不应将其暴露给不受信任的客户端,这些客户端可能会使用它来访问敏感信息或在应用服务器上执行代码。

优点

易于设置,因为不需要正确转发 HTTP 标头。 它占用的资源更少,因为 TCP 数据包以二进制格式转发,而不是进行昂贵的 HTTP 交换。

缺点

传输的数据未加密。它只能在受信任的网络中使用。

超文本传输​​协议 (HTTP)

HTTP 在客户端-服务器计算模型中用作请求-响应协议。例如,Web 浏览器可以是客户端,而在托管网站的计算机上运行的应用程序可以是服务器。客户端向服务器提交 HTTP 请求消息。服务器代表客户端提供 html 文件和其他内容等资源,或执行其他功能,向客户端返回响应消息。响应包含有关请求的完成状态信息,还可能在其消息正文中包含请求的内容。

优点

可以使用 SSL/TLS 加密,使其适合跨不受信任网络的流量。 它很灵活,因为它允许在转发之前修改请求。例如,设置自定义标题。

缺点

更多开销,因为必须确保正确转发 HTTP 标头。 由于请求在转发之前被完全解析,因此占用更多资源。

【讨论】:

以上是关于apache 到 tomcat:mod_jk 与 mod_proxy的主要内容,如果未能解决你的问题,请参考以下文章

Apache 2.4.29 和 mod_jk 1.2.42 不转发到 tomcat

如何将 mod_rewrite 与 Apache -> mod_jk -> tomcat 设置一起使用?

apache/Tomcat:apache 使用 mod_jk 无法访问后端的 Tomcat

通过centos 8上的mod_jk将apache httpd重定向到tomcat

会话混合 - apache httpd 与 mod_jk、tomcat、spring security - 提供其他用户的数据

为啥 Ubuntu 14.04 上的 mod_jk 无法连接到 tomcat