Tomcat与Apache HTTPD的集成

12年前

前言

最近读<Apache Tomcat7 essential>, 书中有介绍了TOMCAT 7与Apache httpd 的集成,特记录如下,以备后查。

背景

TOMCAT偏向应用服务器,前端部分使用HPPTD更合适,针对静态的页面请求,httpd的性能要较tomcat高。使用前端可以隐藏后端服务器的相关信息,如端口等。

安装httpd,tomcat,mod_jk.so

从官网下载httpd,tomcat,典型安装即可,tomcat 7 最好安装JDK6,虽然允许只安装JRE6。默认安装下httpd使用80 端口,tomcat使用8080端口。

二者的集成可以通过两种连接器实现。分别为mod_proxy.so & mod_jk.so。 依介绍jk的性能要好于proxy,同时支持load balance. 下载支持AJP的TOMCAT连接器,mod_jk.so windows下使用的版本。将mod_jk.so复制到apache的modules目录下。在conf目录下新增配置文件,假设命名为mod- jk.conf,内容如下:

LoadModule jk_module modules/mod_jk.so   JkWorkersFile conf/workers.properties  JkLogFile logs/jklogs.log  JkLogLevel Info  JkMount /sample/* node1

说明如下:从modules目录下加载mod_jk.so文件, 连接器的工作者线程的配置信息在conf目录下的workers.properties文件中(后面会有说明),事件的LOG记录在logs目录下的 jklogs.log文件中。LOG的等级为Info。 最后一行指出,当碰到访问路径是/sample开头的URL时,将请求转至node1(该节点信息就是在workers.properties中进行配 置),JkMount的mapping部分可以出现多行,进行多个模式的匹配。 下面我们给出workers.properties的文件内容,如下:

1 worker.list=node1 2 worker.node1.port=8009  3 worker.node1.host=10.0.2.15 4 worker.node1.type=ajp13 5 worker.node1.lbfactor=1

说明如下:指定了节点信息,该内容同conf文件中的JkMount所指定的名称。端口号,必须与Tomcat中的server.xml文件 中<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />所定义的port一致。host指定了主机地址,(但依我目前的做的测试,不管主机地址填什么,mod_jk.so都是将请求转给 127.0.0.1来接受,也就是host指向其他的机器好像没有作用)。lbfactor参数是与load balancing有关的。

总结

配置完毕后,重启apach httpd。

http://127.0.0.1 访问的是httpd

http://127.0.0.1/samples 即实际访问的是tomcat下的http://127.0.0.1:8080/samples,从而达到自动转发的目的