【参考】Apache+Tomcat实现负载均衡及集群(session同步)--二、动静分离(1)使用mod_jk

        准备一个测试用的servlet小程序(见附件)



          一个servlet,访问这个servlet会跳转到首页index.jsp,static中存放静态资源,把这个工程打成war包,放入到tomcat的webapps目录(ip为192.168.137.211),启动tomcat,访问一下



        默认的,我们在通过8080端口访问tomcat的时候,使用的是tomcat的http连接器,此连接器能提供静态和动态资源服务,tomcat还有其他连接器,比如ajp连接器,就是在跟Apache集成时用到的连接器。 

动静分离就是从上面的将所有请求都发送到tomcat演变到只将动态请求发送到tomcat,静态资源的请求留给apache处理。

编辑Apache的主配置文件,进入Apache安装目录下的conf目录,编辑httpd.cfg文件

Apache使用独立的模块来处理这种动态请求,包括mod_jk和mod_proxy.

如果下载的Apache安装包模块中不包含mod_jk,那么需要先下载并编译mod_jk,这里下载了tomcat-connectors-1.2.40-src.tar.gz,上传到/usr/local/目录,编译

解压缩

进入native目录





要使这些模块工作,首先得加载进来

ServerRoot指令指定了Apache查找静态资源的目录

第一行,LoadModule指令,加载mod_jk模块,这些模块存放于conf/modules目录下

第七行,IfModule指令,判断是否加载了模块,模块名称为jk_module

第二行到第六行的指令都是mod_jk模块提供的

JkWorkersFile    指定worker配置文件的路径,要想让Apache把动态请求转发给tomcat,得告诉Apache tomcat的位置,包括ip、端口等,workers.properties这个配置文件就是用于配置这些信息的

JkLogFile    指定日志文件所在位置

JkLogLevel    指定日志输出级别

JkMount    指定请求转发规则,mod_jk模块得决定哪些是动态资源,然后才能将动态资源转发给tomcat,/*表示所有请求,即将所有请求交给名称为worker1的tomcat处理

JkUnMount    指定不转发的请求的规则,即哪些请求不转发给tomcat,静态资源是放在shade/static目录下的,所以配置/shade/static路径下的所有请求不转发

JkMount、JkMount指令在处理时会有顺序,从上到下,如果规则满足,继续往下匹配,直到第一个不满足的规则才停止

接下来配置worker.properties,即告诉Apache请求转发到的tomcat在哪里

加入如下配置

worker.list配置worker的名称,这里暂时配置一个

worker.workerName.xxx配置每一个worker的属性,这里workerName就是worker.list后面配置的名称,worker指tomcat实例,可以有多个tomcat实例,后面配置负载均衡的时候会配置,这里暂时配置一个worker

type:指定tomcat连接器的类型,必须为ajp13,在配置负载均衡时还有一种,lb

host:tomcat运行的主机

port:tomcat的ajp连接器监听的端口

cachesize:apache服务器是多线程的,tomcat能够利用这一优势来维持一定数量的连接作为缓存。根据用户的多少来配置一个合适缓存连接数量有助于提高性能。这里配置为5

修改tomcat的conf/server.xml,确保ajpconnector监听在8009端口,Engine元素的jvmRouter属性的值配置为worker1,即之前在worker.properties文件中配置的tomcat名称

现在将tomcat的webapps/shade目录下的static目录删除,然后启动tomcat,用8080端口访问下


静态资源已经访问不到了

接着在Apache安装目录下的htdocs目录下创建shade目录,将存放静态资源的static目录拷贝进来

启动Apache,然后访问,注意,确保安装tomcat的服务器的8009端口打开

注意,这里访问的是Apache所在的服务器,80端口

至此,已经实现动态资源和静态资源的分离

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值