apache與tomcat服務器鏈接有兩種方式
1.apache自帶的mod_proxy
2.tomcat推出的mod_jkcss
#1.爲何要進行apache與tomcat鏈接?
咱們都知道,tomcat自己已經提供了http服務,該服務的默認端口是8080,裝好tomcat後經過8080端口就能夠直接使用tomcat了。 既然tomcat自己已經提供了這樣的服務,爲啥還要引入apache或者一些其餘的http服務器呢?
1.提高對靜態文件的處理能力(這是apache服務器的強項)
2.利用web服務器作負載均衡(單臺tomcat確定存在性能瓶頸)
3.無縫升級應用程序(即不須要重啓服務器的狀況下,能夠增長多臺服務器)
#2.mod_jk模式
##1.jk是經過ajp協議與tomcat服務器進行通信的,tomcat默認的ajp Connector的端口是8009html
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
tomcat默認的http Connector的端口號是8080,這是tomcat自帶的http服務web
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
單臺tomcat就採用http服務。
##2.jk提供了一個監控及管理狀態jkstatus,經過jkstatus能夠監控jk目前的工做狀態以及對tomcat的鏈接設置。
jk的配置有三個文件
###1.mod_jk.conf
它設置在apache的配置文件http.conf裏面,用來加載jk模塊及指定jk配置文件信息。
###2.workers.properties
鏈接到tomcat服務器的文件。
###3.uriworkermap.properties
uri映射文件,用來指定哪些url由tomcat處理。
##3.mod_jk.conf詳解apache
#指定模塊路徑 LoadModule jk_module modules/mod_jk.so #指定mod_jk的workers JkWorkersFile conf/workers.properties #指定workers的請求處理分配 JkMountFile conf/uriworkermap.properties #指定jk的日誌輸出文件 JkLogFile logs/mod_jk.log #指定日誌級別,這裏設置成警告 JkLogLevel warn #包含標準的mod_jk(默認) #info #包含錯誤信息 #error #用來配置log文件的日期/時間格式,使用strftime()的格式化字符串,默認是[%a %b %d %H:%M:%S %Y] JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
##4.workers.properties緩存
#worker列表 worker.list=controller,Tomcat1,Tomcat2,status #========Tomcat1======== #端口 worker.Tomcat1.port=7009 #ip worker.Tomcat1.host=localhost #協議 worker.Tomcat1.type=ajp13 #加權比重,值越高,分的請求越多 worker.Tomcat1.lbfactor=1 #緩存數 worker.Tomcat1.cachesize=10 #========Tomcat2======== worker.Tomcat2.port=9009 worker.Tomcat2.host=localhost worker.Tomcat2.type=ajp13 worker.Tomcat2.lbfactor=1 #========controller======== #server名爲controller,用於負載均衡 worker.controller.type=lb #指定分擔請求的server列表,用逗號隔開 worker.controller.balanced_workers=Tomcat1,Tomcat2 #設置負載均衡的server的session能否共享 #一次請求中,session只會在一個jboss上,當該jboss崩潰後,請求會跳轉到其它jboss上, #可是其session不會複製跳轉到後的jboss上 #true=1 false=0 #我這裏設置成false,即一個tomcat掛掉了後,請求不會自動轉到另外一個tomcat上 #會出現這種現象,我請求第一次不成功(假設tomcat1掛掉),我請求第二次成功了(tomcat2工做) worker.controller.sticky_session=false #worker.controller.sticky_session_force=false #重試次數 worker.retries=3 #監控status worker.status.type=status
##5.uriworkermap.properties詳解tomcat
#全部的請求都交給controller這個server處理 /*=controller #全部包含jkstatus的請求都由status這個server處理 #全部以.gif結尾的請求都 不給 controller這個server處理(注意:前面有個感嘆號,表示非的意思) !/*.gif=controller !/*.jpg=controller !/*.png=controller !/*.css=controller !/*.js=controller !/*.htm=controller !/*.html=controller #如上這些都是靜態文件,直接由apache處理了