我在十字路口决定是否使用mod_jk或mod_proxy设置Apache 2和Tomcat 7的负载平衡系统。我读了通常的比较,mod_jkfunction更强大但configuration困难等,但我读的是有点过时(2007 – 2010年),根据我目前的要求,我可以去任何一种方式。
现在看看连接器上的Tomcat 7文档! 我发现,除了mod_proxy之外,他们基本上都弃用了:
其他支持AJP的本机连接器可能工作,但不再支持。
那么这是否意味着新的用途应该与mod_proxy一起使用?
mod_proxy是Apache HTTP服务器模块,而不是Apache Tomcat模块。
这个页面所说的是,Tomcat支持JK1.2或Apache HTTP中的mod_proxy模块提供的AJP协议。
历史上你所要做的就是使用mod_jk为Apache HTTP服务器提供AJP1.3支持,就像现在在mod_proxy模块中提供的Apache HTTP 2.2一样 – 参见http://httpd.apache.org/docs/2.2/ mod / mod_proxy.html其中规定:
这个模块实现了Apache的代理/网关。 它实现了AJP13(Apache JServe协议版本1.3),FTP,CONNECT(用于SSL),HTTP / 0.9,HTTP / 1.0和HTTP / 1.1的代理function。
这给了你几个select:
我的build议是select3。
有关在Apache中configuration此信息的特定页面是http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html
多年来,已经有许多连接器被开发来使Apache httpd能够与使用了各种协议的Tomcat进行通信。 当在网上search有关如何做到这一点的信息时,偶然发现一些非常糟糕的,过时的build议。 所以首先你应该考虑的唯一select是:
所有其他的选项都没有得到多年的支持,所以你应该避免mod_jk2,mod_jserv,mod_webapp以及其他在这里没有讨论过的模块。 目前有三项支持,都是积极发展的。
我在为$ work提供支持方面的经验是,现在一个典型的客户在mod_proxy_ajp中比在mod_jk或mod_proxy_http中更容易出错。 (几年前mod_proxy_ajp还不成熟,但是现在我没有看到任何区别。)
这带来了一个紧迫的问题:HTTP(mod_proxy_http)或AJP(mod_proxy_ajp或mod_jk)? 而答案呢? 这取决于! 两个协议都有其优点和缺点。 哪一个适合你,取决于你的情况。 通常影响这个select的因素是:
如果您已经在使用mod_jk,mod_proxy_http或mod_proxy_ajp,并且它符合您的所有要求,那么不太可能有一个很好的理由来改变它。 坚持使用你现在使用的并且在你的httpd实例中保持一致性会更好。
如果您需要encryptionhttpd和Tomcat之间的通信,那么使用mod_proxy_http可以显着简化,因为您只需从http切换到https协议即可。 mod_jk和mod_proxy_ajp使用不支持encryption的AJP协议,因此您必须通过SSH隧道,IPSec或类似的协议单独实现。 这会给httpd-Tomcat通信通道增加很多configuration复杂性。
在httpd终止SSL的时候,提供SSL属性是暴露的(两个简单的指令),那么mod_jk和mod_proxy_ajp会自动将这些信息传递给Tomcat,而Tomcat可以让Web应用程序不需要任何额外的configuration。 要获得与mod_proxy_http相同的结果,需要将httpdconfiguration为将SSL信息添加为http标题,并且需要在Tomcat中configurationValve以提取此信息并使其可用于Web应用程序。 因此,使用mod_proxy_http可以使Tomcat的SSL信息更复杂一些。
mod_jk和mod_proxy_ *也有非常不同的configuration样式。 mod_proxy_ *指令与其他httpd指令一致,而mod_jk使用外部属性文件。 对于熟悉httpd的系统pipe理员来说,mod_jk方法看起来有些奇怪。
综上所述:
另请参阅我写的演示文稿( http://people.apache.org/~markt/presentations/2012-10-Apache-Tomcat-Reverse-proxies.pdf )和Rainer Jung对演示文稿的其他评论( http:// people .apache.org /〜markt / presentations / 2012-10-Apache-Tomcat-Reverse-proxies-notes-rjung.txt )