本文内容转载整理自《Apache HTTP Server 与 Tomcat 的三种连接方式介绍》(http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/)
Apache与Tomcat整合的优势有以下几点:
1. 提升对静态文件的处理性能
2. 利用 Web 服务器来做负载均衡以及容错
3. 无缝的升级应用程序
整合方式一:使用Apache的mod_jk.so模块
使用该方式需要三个配置文件,分别是httpd.conf、workers.properties、uriworkermap.properties,这三个配置文件均需放在apache的conf目录下。
示例内容如下:
httpd.conf
# Add module mod_jk.so
LoadModule jk_module modules/mod_jk.so
#
# Configure mod_jk
#
# Configure worker
JkWorkersFile conf/workers.properties
# Configure uri
JkMountFile conf/uriworkermap.properties
JkLogFile logs/mod_jk.log
JkLogLevel warn
workers.properties
#
# workers.properties
#
# list the workers by name
# DLOG4J is worker
worker.list=DLOG4J, status
# localhost server 1
# ------------------------
worker.s1.port=8009
worker.s1.host=localhost
worker.s1.type=ajp13
# localhost server 2
# ------------------------
worker.s2.port=8519
worker.s2.host=192.168.200.14
worker.s2.type=ajp13
worker.s2.stopped=1
# configure the type of DLOG4J is loadbalance
worker.DLOG4J.type=lb
worker.retries=3
# configure s1 and s2 is balanced workers
worker.DLOG4J.balanced_workers=s1, s2
worker.DLOG4J.sticky_session=1
worker.status.type=status
uriworkermap.properties
#
# uriworkermap.properties
#
/*=DLOG4J
/jkstatus=status
!/*.gif=DLOG4J
!/*.jpg=DLOG4J
!/*.png=DLOG4J
!/*.css=DLOG4J
!/*.js=DLOG4J
!/*.htm=DLOG4J
!/*.html=DLOG4J
整合方式二:使用Apache的mod_proxy.so模块
http_proxy
注意:使用Apache的http_proxy,Tomcat必须配置HTTP Connector使其能支持HTTP协议。
单机时,可用以下配置
ProxyPass /images !
ProxyPass /css !
ProxyPass /js !
ProxyPass / http://localhost:8080/
机器时,可用以下配置
ProxyPass /images !
ProxyPass /css !
ProxyPass /js !
ProxyPass / balancer://example/
<Proxy balancer://example/>
BalancerMember http://server1:8080/
BalancerMember http://server2:8080/
BalancerMember http://server3:8080/
</Proxy>
ajp_proxy
注意:使用Apache的ajp_proxy,Tomcat必须配置AJP Connector使其能支持AJP协议。
ProxyPass /images !
ProxyPass /css !
ProxyPass /js !
ProxyPass / balancer://example/
<Proxy balancer://example/>
BalancerMember ajp://server1:8080/
BalancerMember ajp://server2:8080/
BalancerMember ajp://server3:8080/
</Proxy>