Tomcat與Apache HTTPD的集成
前言
最近讀<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,從而達到自動轉發的目的