文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

详解Apache 和 Tomcat 整合原理、配置方案

2024-12-11 19:56

关注

为什么要让 Apache 与 Tomcat 之间进行连接呢?

原因有下面几个:

提升对静态文件的处理性能

利用 Web 服务器来做负载均衡以及容错

无缝的升级应用程序

[[332848]]

Apache 和 Tomcat整合原理:

 

 

换而言之:Apache是一辆车,上面可以装一些东西如html等,但是不能装水,要装水必须要有桶(容器),而这个桶也可以不放在卡车上,那这个桶就是Tomcat。

Apache HTTP Server 与 Tomcat 的三种连接方式

JK

  1. 编译生成mod_jk模块
  2. 在apache中加载mod_jk并对其进行配置
  3. 在tomcat中修改配置以使其能接受mod_jk的转发

编译生成mod_jk.so,然后将其复制到httpd加载模块默认的目录/etc/httpd/modules

yum install httpd-devel -y #编译生成apache扩展依赖apxs,如未安装先安装

  1. wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.42-src.tar.gz 
  2.  
  3. tar -zxf tomcat-connectors-1.2.42-src.tar.gz 
  4.  
  5. cd tomcat-connectors-1.2.42-src/native/ 
  6.  
  7. ./configure --with-apxs=/usr/sbin/apxs 
  8.  
  9. make 
  10.  
  11. cp ./apache-2.0/mod_jk.so /etc/httpd/modules/ 
  12.  
  13. https://tomcat.apache.org/download-connectors.cgi 

 

 

JK 是通过 AJP 协议与 Tomcat 服务器进行通讯的,Tomcat 默认的 AJP Connector 的端口是 8009。

JK 本身提供了一个监控以及管理的页面 jkstatus,通过 jkstatus 可以监控 JK 目前的工作状态以及对到 tomcat 的连接进行设置,如下图所示:

 

 

图中JK配了两个连接分别到 8109 和 8209 端口上,

也可以利用 jkstatus 的管理功能来切换 JK 到不同的 Tomcat 上,例如将 s2 启用,并停用 s1

JK 的配置最关键的有三个文件,分别是

Apache 服务器的配置文件,用来加载 JK 模块以及指定 JK 配置文件信息

到 Tomcat 服务器的连接定义文件

Workers实际上属于Tomcat的链接器(Connector),代表了一个Tomcat实例,这个实例代表了由某种web服务器来执行 servelet程序。

举例来说,我们可以使用某个服务器,例如apache 来把servelet请求转递Tomcat进程(worker)来进行后台处理。

可以通过属性文件来为Tomcat Web服务器插件定义Worker。(在conf/下有个文件名为wo rkers.properties就是一个可用Workers属性文件).

worker.list=<由逗号分离开的worker名称列表>

worker.list= worker1, worker2

当启动服务器的时候,Web服务器插件会把这些出现在worker.list属性中出现名字的worker实例化,而这些也就是你可以用来映射请求的worker

Workers的类型

对于每个有名字的worker都会有若干条目给使用者提供worker自身的附加信息。这些信息包括worker的类型和与之相关的worker的信息。JK 1.2.5中包含下列的worker类型:

类型 说明

配置httpd.conf

 

 

接下来我们在 Apache 的 conf 目录下新建两个文件分别是 workers.properties、uriworkermap.properties。这两个文件的内容大概如下

 

 

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

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

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

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

接下来便是 URI 的映射配置了,我们需要指定哪些链接是由 Tomcat 处理的,哪些是由 Apache 直接处理的

 

 

所有的请求都由 ZYKJ 这个 worker 进行处理,但是有几个例外,/jkstatus 请求由 status 这个 worker 处理。

感叹号表示接下来的 URI 不要由 JK 进行处理,也就是 Apache 直接处理所有的图片、css 文件、js 文件以及静态 html 文本文件。

通过对 workers.properties 和 uriworkermap.properties 的配置,可以有各种各样的组合来满足我们前面提出对一个 web 网站的要求

二、http_proxy

这是利用 Apache 自带的 mod_proxy 模块使用代理技术来连接 Tomcat。

http_proxy 模式是基于 HTTP 协议的代理,因此它要求 Tomcat 必须提供 HTTP 服务,也就是说必须启用 Tomcat 的 HTTP Connector。一个最简单的配置如下

 

 

在这个配置中,我们把所有 http://localhost 的请求代理到 http://localhost:8080/ ,这也就是 Tomcat 的访问地址,除了 images、css、js 几个目录除外。我们同样可以利用 mod_proxy 来做负载均衡,再看看下面这个配置

 

 

三、ajp_proxy

ajpproxy 连接方式其实跟 httpproxy 方式一样,都是由 mod_proxy 所提供的功能。配置也是一样,只需要把 http:// 换成 ajp:// ,同时连接的是 Tomcat 的 AJP Connector 所在的端口。上面例子的配置可以改为:

 

 

采用 proxy 的连接方式,需要在 Apache 上加载所需的模块,mod_proxy 相关的模块有

  1. mod_proxy.so、 
  2.  
  3. modproxyconnect.so、 
  4.  
  5. modproxyhttp.so、 
  6.  
  7. modproxyftp.so、 
  8.  
  9. modproxyajp.so 

总结

相对于 JK 的连接方式,后两种在配置上是比较简单的,灵活性方面也一点都不逊色。但就稳定性而言就不像 JK 这样久经考验,如果是应用于关键的互联网网站,还是建议采用 JK 的连接方式。

 

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯