47_01Tomcat系列之apache使用mod_proxy或mod_jk反向代理tomcat

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
  1. 安装jdk和tomcat. 参考:46_03(实验)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 #vim /usr/local/tomcat/conf/server.xml 

修改成<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>

# catalina.sh configtest
# mkdir -pv /web/webapps  #把jsp放到这个目录下就行;
# cd /web/webapps
# vim index.jsp
<html><body><center>
now time is: <%=new java.util.Date()%>
</center></body></html>

#catalina.sh start

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的配置选项: 
    #./configure --prefix=/usr/local/apache \
     --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
#/usr/local/apache/bin/httpd -D DUMP_MODULES | grep proxy   #默认没有,可以在配置文件中查找proxy然后启动这些; 
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)
1
#vim /etc/httpd/httpd.conf

注释中心主机,添加

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
#vim /etc/httpd/extra/httpd-proxy.conf 
<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
#tar xf tomcat-connectors-1.2.37-src.tar.gz 
#cd tomcat-connectors-1.2.37-src/native/
#./configure --with-apxs=/usr/local/apache/bin/apxs
#make && make install

注释掉:
#Include /etc/httpd/extra/httpd-proxy.conf
添加:
Include /etc/httpd/extra/httpd-jk.conf

apache要使用mod_jk连接器,需要在启动时加载此连接器模块。为了便于管理与mod_jk模块相关的配置,这里使用一个专门的配置文件/etc/httpd/extra/httpd-jk.conf来保存相关指令及其配置,其内容如下:
#vim /etc/httpd/extra/httpd-jk.conf

#Load the mod_jk
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



# vim /etc/httpd/extra/workers.properties
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服务即可生效;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值