apache与tomcat结合来提供web服务已经是很成型的解决方案了。不过其中apache将请求分发给tomcat过程中的一些配置,还是有些不太明折的地方,今天百度了一下,整理出来,以供日后参考:
(在这里要感谢
饮马闪客
http://www.yunwei8.com/jmwu/)
mod_jk.conf指令解释:
#指定模块路径
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]"
#Options Description(选项的说明)
# %b 发送的字节, 不包括 HTTP headers (CLF format)
# %B 发送的字节, 不包括 HTTP headers
# %H 协议
# %m 请求方式(get/post)
# %p 服务器响应请求的规范端口.
# %q 查询字符串 (如果存在以?开头,否则是空串)
# %r 请求的第一行.
# %s HTTP状态码
# %T 请求间隔, 处理请求耗费的时间 秒.微秒
# %U 请求的url路径,不包含查询字符串.
# %v 响应请求的规范服务器名字
# %V 根据UseCanonicalName设置的服务器名字.
# %w Tomcat worker 名字
#JkRequestLogFormat 设置个人用户请求的log格式.
JkRequestLogFormat "%w %V %T"
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]"
#Options Description(选项的说明)
# %b 发送的字节, 不包括 HTTP headers (CLF format)
# %B 发送的字节, 不包括 HTTP headers
# %H 协议
# %m 请求方式(get/post)
# %p 服务器响应请求的规范端口.
# %q 查询字符串 (如果存在以?开头,否则是空串)
# %r 请求的第一行.
# %s HTTP状态码
# %T 请求间隔, 处理请求耗费的时间 秒.微秒
# %U 请求的url路径,不包含查询字符串.
# %v 响应请求的规范服务器名字
# %V 根据UseCanonicalName设置的服务器名字.
# %w Tomcat worker 名字
#JkRequestLogFormat 设置个人用户请求的log格式.
JkRequestLogFormat "%w %V %T"
workers.properties指令解释:
# worker列表
worker.list=controller,status
#第一个server的配置,server名为ymsk1
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.ymsk1.port=8109
#tomcat的主机地址,如不为本机,请填写ip地址
worker.ymsk1.host=192.168.1.101
worker.ymsk1.type=ajp13
#server的加权比重,值越高,分得的请求越多
worker.ymsk1.lbfactor=1
worker.ymsk1.cachesize=10
#第二个server的配置,server名为s2
worker.ymsk2.port=8209
worker.ymsk2.host=192.168.1.101
worker.ymsk2.type=ajp13
worker.ymsk2.lbfactor=1
worker.ymsk2.cachesize=10
#server名为controller,用于负载均衡
worker.controller.type=lb
#重试次数
worker.retries=3
#指定分担请求的server列表,用逗号分隔
worker.controller.balanced_workers=ymsk1,ymsk2
#设置用于负载均衡的server的session可否共享
#一次请求中 session 只会在一个jboss上,当该jboss奔溃后,请求会跳转到其他jboss上,但是其session不会复制到跳转后的jboss上
#true=1 false=0
#worker.controller.sticky_session=1
#worker.controller.sticky_session_force=0
#每次请求都会跳转到其他jboss上
#如果有AB两个jboss负载均衡值都为1,第一次请求A session为A1,第二次请求跳转到B session B2,
#第三次又回到A session为 A1 和 A3,第四次跳转到B session 为 B2 和 B4
#worker.controller.sticky_session=0
#worker.controller.sticky_session_force=0
#一次请求中 session 只会在一个jboss上,当该jboss奔溃后,服务端会返回Service Temporarily Unavailable:The server is
#temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
#worker.controller.sticky_session=1
#worker.controller.sticky_session_force=1
#每次请求都会跳转到其他tomcat上
#如果有AB两个jboss负载均衡值都为1,第一次请求A session为A1,第二次请求跳转到B session B2,
#第三次又回到A session为A3,第四次跳转到B session B4,即每次跳转都不会带上session,也不会保留原有的session
#worker.controller.sticky_session=0
#worker.controller.sticky_session_force=1
#我这里配置如下:
worker.controller.sticky_session=0
worker.controller.sticky_session_force=0
#描述是用于httpd自身状态监控的status
worker.status.type=status
worker.list=controller,status
#第一个server的配置,server名为ymsk1
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.ymsk1.port=8109
#tomcat的主机地址,如不为本机,请填写ip地址
worker.ymsk1.host=192.168.1.101
worker.ymsk1.type=ajp13
#server的加权比重,值越高,分得的请求越多
worker.ymsk1.lbfactor=1
worker.ymsk1.cachesize=10
#第二个server的配置,server名为s2
worker.ymsk2.port=8209
worker.ymsk2.host=192.168.1.101
worker.ymsk2.type=ajp13
worker.ymsk2.lbfactor=1
worker.ymsk2.cachesize=10
#server名为controller,用于负载均衡
worker.controller.type=lb
#重试次数
worker.retries=3
#指定分担请求的server列表,用逗号分隔
worker.controller.balanced_workers=ymsk1,ymsk2
#设置用于负载均衡的server的session可否共享
#一次请求中 session 只会在一个jboss上,当该jboss奔溃后,请求会跳转到其他jboss上,但是其session不会复制到跳转后的jboss上
#true=1 false=0
#worker.controller.sticky_session=1
#worker.controller.sticky_session_force=0
#每次请求都会跳转到其他jboss上
#如果有AB两个jboss负载均衡值都为1,第一次请求A session为A1,第二次请求跳转到B session B2,
#第三次又回到A session为 A1 和 A3,第四次跳转到B session 为 B2 和 B4
#worker.controller.sticky_session=0
#worker.controller.sticky_session_force=0
#一次请求中 session 只会在一个jboss上,当该jboss奔溃后,服务端会返回Service Temporarily Unavailable:The server is
#temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
#worker.controller.sticky_session=1
#worker.controller.sticky_session_force=1
#每次请求都会跳转到其他tomcat上
#如果有AB两个jboss负载均衡值都为1,第一次请求A session为A1,第二次请求跳转到B session B2,
#第三次又回到A session为A3,第四次跳转到B session B4,即每次跳转都不会带上session,也不会保留原有的session
#worker.controller.sticky_session=0
#worker.controller.sticky_session_force=1
#我这里配置如下:
worker.controller.sticky_session=0
worker.controller.sticky_session_force=0
#描述是用于httpd自身状态监控的status
worker.status.type=status
uriworkermap.properties指令解释:
/*=controller #所有请求都由controller这个server处理
/jkstatus=status #所有包含jkstatus请求的都由status这个server处理
!/*.gif=controller #所有以.gif结尾的请求都不由controller这个server处理,以下几个都是一样的意思
!/*.jpg=controller
!/*.png=controller
!/*.css=controller
!/*.js=controller
!/*.htm=controller
!/*.html=controller
#这里的"!”类似于java中的"!”,是“非”的意思。
/jkstatus=status #所有包含jkstatus请求的都由status这个server处理
!/*.gif=controller #所有以.gif结尾的请求都不由controller这个server处理,以下几个都是一样的意思
!/*.jpg=controller
!/*.png=controller
!/*.css=controller
!/*.js=controller
!/*.htm=controller
!/*.html=controller
#这里的"!”类似于java中的"!”,是“非”的意思。