mod_proxy:提供代理的功能,而mod_jk是作为一个独立的连接器存在,所以性能上要比较高;
- mod_jk:mod_jk实质上是Apache与Tomcat的连接器,并藉此附带提供集群和负载均衡的功能。
- mod_jk2:mod_jk的升级版,但官方已不再支持;
mod_proxy_http:mod_proxy提供http反向代理;
- mod_proxy_ajp :这个使用二进制方式传输,与通过http协议代理到后端相比,效率更高,而且在进行访问tomcat时不允许不经过反向代理过来;
- mod_proxy_banlancer:负载均衡时用到;
如果使用tomcat做集群,建议使用httpd做反向代理;
环境配置:
tomcat主机:
- 192.168.10.8
- 192.168.10.9
- 安装jdk和tomcat. 参考:46_03(实验)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 修改成<Engine name="Cataina"> defaultHost="www.test.com" jvmRoute="Tomcat1"> 添加 <Host name="www.test.com" appBase="/web" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="webapps" reLoadable="true" /> </Host>
<html><body><center> now time is: <%=new java.util.Date()%> </center></body></html>
|
192.168.10.106安装httpd,对后端的Tomcat做反向代理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| 安装httpd的配置选项: --sysconfdir=/etc/httpd \ --enable-so \ --enable-rewrite \ --enable-ssl \ --with-zlib \ --with-pcre \ --enable-cgi \ --enable-cgid \ --enable-modules=most \ --enable-deflate \ --enable-mods-shared=most \ --enable-mpms-shared=all \ --with-mpm=event \ --enable-proxy \ --enable-proxy-http \ --enable-proxy-ajp \ --enable-proxy-balancer \ --enable-lbmethod-heartbeat \ --enable-heartbeat \ --enable-slotmem-shm \ --enable-slotmem-plain \ --enable-watchdog \ --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr-util
|
配置apache通过mod_proxy模块与tomcat连接
需要使用mod_proxy与tomcat实例连接,需要apache已经装载mod_proxy、mod_proxy_http、mod_proxy_ajp和proxy_balancer_module(实现tomcat集群时用到)等模块;
1 2 3 4 5 6 7 8 9 10
| proxy_module(shared) proxy_connect_module(shared) proxy_ftp_module(shared) proxy_http_module(shared) proxy_fcgi_module(shared) proxy_scgi_module(shared) proxy_ajp_module(shared) proxy_balancer_module(shared) proxy_express_module(shared)
|
注释中心主机,添加
Include /etc/httpd/extra/httpd-proxy.conf
让apache跟tomcat的http连接器进行整合:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <VirtualHost *:80> ProxyVia On ProxyRequests Off 关闭正向代理; ProxyPass / http://192.168.10.8:8080/ ProxyPassReverse / http://192.168.10.8:8080/ <Proxy *> Require all granted </Proxy> <Location /> Require all granted </Location> </VirtualHost> LoadModule slotmem_shm_module modules/mod_slotmem_shm.so LoadModule slotmem_plain_module modules/mod_slotmem_plain.so
|
重启httpd即可实现反向代理。
这个地方我没有添加httpd启动脚本,自己看前面的;;http://172.16.100.106/index.jsp
需要着重明白这句话,所有的请求都会交给后端的Tomcat处理,httpd并不会处理任何请求,所以网页要放在tomcat指定的目录下;
【方式二】 配置apache跟tomcat的mod_jk连接器进行整合:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
注释掉:
添加: Include /etc/httpd/extra/httpd-jk.conf apache要使用mod_jk连接器,需要在启动时加载此连接器模块。为了便于管理与mod_jk模块相关的配置,这里使用一个专门的配置文件/etc/httpd/extra/httpd-jk.conf来保存相关指令及其配置,其内容如下:
LoadModule jk_module modules/mod_jk.so JkWorkersFile /etc/httpd/extra/workers.properties JkLogFile logs/mod_jk.log JkLogLevel debug JkMount /* Tomcat1 送到哪一个tomcat上去,这个和上面的jvmRoute要一致; JkMount /status/ stat1
worker.list=Tomcat1,stat1 worker.Tomcat1.port=8009 worker.Tomcat1.host=192.168.10.8 worker.Tomcat1.type=ajp13 worker.Tomcat1.lbfactor=1 worker.stat1.type=status
|
至此,一个基于mod_jk模块与后端名为Tomcat1的worker通信的配置已经完成,重新httpd服务即可生效;