WORD文档记录:apache tomcat.docx

mod_jk.conf 内容如下:

1
2
3
4
5
6
7
8
9
10
# (httpd.conf)
# 加载 mod_jk 模块
LoadModule jk_module modules/mod_jk.so
#
# Configure mod_jk
#
JkWorkersFile conf/workers.properties
JkMountFile conf/uriworkermap.properties
JkLogFile logs/mod_jk.log
JkLogLevel warn

在conf目录新建workers.properties与uriworkermap.properties文件并进行修改

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
#
# workers.properties
#

# list the workers by name

worker.list=tomcatserver, status

# localhost server 1
# ------------------------
worker.s1.port=8109
worker.s1.host=localhost
worker.s1.type=ajp13

# localhost server 2
# ------------------------
worker.s2.port=8209
worker.s2.host=localhost
worker.s2.type=ajp13
worker.s2.stopped=1

worker.tomcatserver.type=lb
worker.retries=3
worker.tomcatserver.balanced_workers=s1, s2
worker.tomcatserver.sticky_session=1

worker.status.type=status

稍作解释一下以上的 workers.properties 配置。

首先我们配置了两个类型为 ajp13 的 worker 分别是 s1 和 s2,注意它们指向同一台服务器上运行在两个不同端口 8109 和 8209 的 Tomcat 上(Tomcat 默认的端口为8009)。

接下来我们配置了一个类型为 lb(也就是负载均衡的意思)的 worker,它的名字是 tomcatserver,这是一个逻辑的 worker,它用来管理前面配置的两个物理连接 s1 和 s2。

最后还配置了一个类型为 status 的 worker,这是用来监控 JK 本身的模块。

有了这三个 worker 还不够,我们还需要告诉 JK,哪些 worker 是可用的,所以就有 worker.list = tomcatserver, status 这行配置。

再来配置一下 uriworkermap.properties

1
2
/*=tomcatserver #所有的请求都由 tomcatserver 这个 worker 进行处理
/jkstatus=status #/jkstatus 请求由 status 这个 worker 处理

以下都不需要用 tomcatserver 来处理,直接交给 apache 处理。

1
2
3
4
5
6
7
!/*.gif=tomcatserver
!/*.jpg=tomcatserver
!/*.png=tomcatserver
!/*.css=tomcatserver
!/*.js=tomcatserver
!/*.htm=tomcatserver
!/*.html=tomcatserver

所有的请求都由 tomcatserver 这个 worker 进行处理,但是有几个例外,/jkstatus 请求由 status 这个 worker 处理。另外这个配置中每一行数据前面的感叹号是什么意思呢?感叹号表示接下来的 URI 不要由 JK 进行处理,也就是 Apache 直接处理所有的图片、css 文件、js 文件以及静态 html 文本文件。