apache需通过mod_jk模块实现与tomcat的ajp通信:先安装apxs工具并编译mod_jk.so,再在apache中加载模块、配置jkmount规则,在tomcat的server.xml启用ajp connector(端口8009),并创建workers.properties定义后端节点,最终达成动静分离。

Apache 本身不内置 Tomcat 集成能力,必须通过 mod_jk(即 mod_jk.so)这个官方推荐的连接模块,才能与 Tomcat 建立 AJP 协议通信,实现动静分离。这不是“安装时集成”,而是 Apache 安装完成后,单独编译加载 mod_jk 模块,并配合 Tomcat 的 AJP 连接器完成配置。
1. 确保 Apache 已正确安装并可运行
使用系统包管理器或源码安装均可,关键是要有 apxs 工具(Apache 扩展工具),它用于编译和安装第三方模块:
- CentOS/RHEL:运行
yum install httpd-devel(提供 apxs) - Ubuntu/Debian:运行
apt install apache2-dev - 验证:执行
apxs -v能输出版本信息即表示就绪
2. 编译安装 mod_jk.so 模块
下载对应版本的 tomcat-connectors 源码(如 1.2.48),解压后进入 native/ 目录编译:
- 执行
./configure --with-apxs=/usr/bin/apxs(路径需与实际 apxs 位置一致) - 执行
make && make install - 成功后,
mod_jk.so会自动复制到 Apache 模块目录(如/usr/lib64/httpd/modules/)
3. 配置 Apache 加载 mod_jk 并定义转发规则
在 Apache 配置中(如 /etc/httpd/conf/httpd.conf 或独立的 jk.conf)添加:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 加载模块:
LoadModule jk_module modules/mod_jk.so - 指定 workers 配置文件:
JkWorkersFile /etc/httpd/conf/workers.properties - 指定 URI 映射文件(可选,也可直接写在 VirtualHost 中):
JkMountFile /etc/httpd/conf/uriworkermap.properties - 在虚拟主机中声明哪些路径交给 Tomcat:
JkMount /app/* worker1(表示所有/app/下的请求走 AJP 到 worker1)
4. 配置 Tomcat 启用 AJP 连接器
编辑 $CATALINA_HOME/conf/server.xml,确保以下 Connector 存在且未被注释:
<connector port="8009" protocol="AJP/1.3" redirectport="8443"></connector>- 若需多实例,每个 Tomcat 的 AJP 端口必须唯一(如 8009、8010、8011)
- 建议添加
secretRequired="false"(测试环境)或配secret(生产环境增强安全)
5. 创建 workers.properties 文件定义后端节点
该文件告诉 Apache 如何连接 Tomcat 实例,例如单节点配置:
worker.list=worker1<br>worker.worker1.type=ajp13<br>worker.worker1.host=localhost<br>worker.worker1.port=8009<br>worker.worker1.lbfactor=1
如需负载均衡,可定义多个 worker 并启用 lb 类型 worker。
完成以上步骤后,重启 Apache 和 Tomcat,静态资源(HTML/CSS/JS/图片等)由 Apache 直接响应,动态请求(如 /app/login)经 AJP 协议转发至 Tomcat 处理——动静分离即生效。










