Linux Apache JK配置出错怎么办?apache jk mod_jk配置详解

在 Linux 环境下,Apache 配合 JK (mod_jk) 是一种经典的架构,主要用于将 Apache 作为前端 Web 服务器(处理静态资源、SSL 终止等),并将动态请求转发给后端的 TomcatJetty 等应用服务器。

mod_jk 是 Apache 的一个模块,它使用 AJP (Apache JServ Protocol) 协议与后端应用服务器通信。

Linux操作系统-Apache服务器的安装
加载中
Linux操作系统-Apache服务器的安装

以下是完整的配置指南,涵盖安装、配置和常见问题。


架构简述

[ 客户端 ] --> [ Apache (mod_jk) :80/443 ] --> [ AJP 协议 ] --> [ Tomcat :8009 ]
  • Apache: 负责静态文件(HTML/CSS/JS/图片)、SSL 加密、负载均衡。
  • mod_jk: Apache 的连接器模块。
  • Tomcat: 运行 Java Web 应用,监听 AJP 端口(默认 8009)。

安装步骤

1 安装 Apache 和 mod_jk

Ubuntu/Debian:

sudo apt update
sudo apt install apache2 libapache2-mod-jk

CentOS/RHEL:

sudo yum install httpd mod_jk
# 或者在较新版本中使用 dnf
sudo dnf install httpd mod_jk

2 安装 Tomcat

确保 Tomcat 已安装并正在运行,默认情况下,Tomcat 的 AJP 连接器在 server.xml 中是启用的,监听端口为 8009


配置 Tomcat

确保 Tomcat 的 server.xml 中启用了 AJP 连接器:

<!-- 在 server.xml 的 <Service> 标签内 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

注意:如果修改了 Tomcat 配置,请重启 Tomcat。

Linux Apache JK配置出错怎么办?apache jk mod_jk配置详解


配置 mod_jk

mod_jk 的主要配置文件通常位于 /etc/libapache2-mod-jk//etc/httpd/conf/ 目录下。

1 创建 workers.properties

定义后端 Tomcat 服务器列表。

文件路径: /etc/libapache2-mod-jk/workers.properties

# 定义 worker 名称
worker.list=worker1
# 定义 worker1 的类型为 ajp13
worker.worker1.type=ajp13
# 指定 Tomcat 主机地址(本地则为 localhost)
worker.worker1.host=localhost
# 指定 Tomcat 的 AJP 端口(默认 8009)
worker.worker1.port=8009
# 设置负载因子(用于负载均衡,单节点可忽略)
worker.worker1.lbfactor=1

2 配置 Apache 加载 mod_jk

文件路径: /etc/apache2/mods-available/jk.conf (Ubuntu) 或 /etc/httpd/conf.d/jk.conf (CentOS)

# 加载 mod_jk 模块
LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so
# 或者在 CentOS 上可能是: LoadModule jk_module modules/mod_jk.so
# 指定 workers.properties 文件路径
JkWorkersFile /etc/libapache2-mod-jk/workers.properties
# 指定 JK 日志文件路径
JkLogFile /var/log/apache2/mod_jk.log
# 设置日志级别 (info, debug, error, trace)
JkLogLevel info
# 指定哪些请求需要转发给 Tomcat
# 所有以 .jsp, .do, .action 结尾的请求
JkMount /.jsp worker1
JkMount /.do worker1
JkMount /.action worker1
# 或者:将所有请求都转发(不推荐,静态文件会由 Tomcat 处理,效率低)
# JkMount / worker1

提示:在 Ubuntu 上,你可能需要启用该模块:

sudo a2enmod jk

3 配置虚拟主机(可选但推荐)

为了更精细地控制,建议在虚拟主机配置中指定 JkMount。

Linux Apache JK配置出错怎么办?apache jk mod_jk配置详解

文件路径: /etc/apache2/sites-available/000-default.conf 或自定义 vhost 文件

<VirtualHost :80>
    ServerName www.example.com
    DocumentRoot /var/www/html
    # 静态文件由 Apache 直接处理
    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    # 动态请求转发给 Tomcat
    JkMount /app/ worker1
    JkMount /app/.jsp worker1
    # 日志
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

重启服务

# 重启 Apache
sudo systemctl restart apache2
# 或
sudo systemctl restart httpd
# 检查 Tomcat 是否运行
sudo systemctl status tomcat

验证配置

  1. 访问 Apache 的静态页面,确认能正常显示。
  2. 访问动态页面(如 /app/test.jsp),确认能由 Tomcat 处理并返回结果。
  3. 查看日志:
    tail -f /var/log/apache2/mod_jk.log

常见问题与排查

Q1: 502 Bad Gateway 或 Connection Refused

  • 原因:Tomcat 未启动,或 AJP 端口(8009)未监听。
  • 解决:检查 Tomcat 状态,确认 server.xml 中 AJP 连接器已启用。

Q2: 静态文件访问慢

  • 原因:如果配置了 JkMount / worker1,所有请求都会转发给 Tomcat,包括 CSS/JS/图片。
  • 解决:只将动态请求(如 .jsp, .do, /api/)转发给 Tomcat,静态文件由 Apache 直接提供。

Q3: mod_jk 已弃用?

Linux Apache JK配置出错怎么办?apache jk mod_jk配置详解

  • 现状mod_jk 确实已停止维护多年,Apache 官方推荐使用 mod_proxy_ajpmod_proxy_http
  • 替代方案
    • mod_proxy_ajp: 配置更简单,无需 workers.properties
      LoadModule proxy_module modules/mod_proxy.so
      LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
      ProxyPass /app ajp://localhost:8009/app
      ProxyPassReverse /app ajp://localhost:8009/app
    • mod_proxy_http: Tomcat 配置了 HTTP 连接器(默认 8080),可以使用 HTTP 协议转发。
      ProxyPass /app http://localhost:8080/app
      ProxyPassReverse /app http://localhost:8080/app

建议:如果是新项目,推荐使用 mod_proxy_ajpmod_proxy_http,它们更轻量且维护更好。mod_jk 仅建议在遗留系统中使用。


特性 mod_jk mod_proxy_ajp
协议 AJP 1.3 AJP 1.3
配置文件 需要 workers.properties 直接在 Apache 配置中指定
维护状态 已停止维护 活跃维护
性能 良好 良好
推荐度 仅用于遗留系统 新项目推荐

如果你正在搭建新系统,建议直接使用 mod_proxy_ajpmod_proxy_http,如果必须使用 mod_jk,请确保正确配置 workers.propertiesJkMount

首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/478317.html

(0)
Excel表格怎么换行分列?
上一篇 2026年7月10日 05:18
H5本地数据库最大存储量是多少?indexedDB存储上限
下一篇 2026年7月10日 05:20

相关推荐

  • Bootice for linux能用吗?Linux系统如何制作启动盘

    BootICE 是一款专为 Windows 环境设计的磁盘引导管理工具,Linux 原生环境下没有名为 BootICE 的官方软件,但可通过 GRUB2 配置或 Boot-Repair 等替代方案实现类似功能,很多用户在尝试双系统或修复引导时,习惯性地搜索 BootICE for Linux,这其实是一个常见的……

    2026年7月4日
    1910
  • linux如何彻底卸载nodejs?卸载nodejs后怎么清理残留

    在Linux系统中卸载Node.js最彻底的方式是结合包管理器(如yum或apt)与手动清理,以npm全局安装的工具为例,通常需要先卸载npm包,再移除Node.js二进制文件及配置文件,最后清理环境变量,很多开发者在升级Node版本或迁移环境时,常遇到旧版本残留导致冲突的情况,直接删除文件夹往往无法根除所有痕……

    2026年7月8日
    2700
  • linux退出帮助怎么操作?linux退出帮助命令

    在Linux终端中,直接输入exit或按Ctrl+D组合键即可安全退出当前会话或Shell环境,若需强制终止进程则使用kill命令配合进程ID,很多刚接触Linux的用户在面对黑底白字的终端界面时,往往会产生一种“被困住”的焦虑感,这种焦虑通常源于对退出机制的不熟悉,或者误以为需要像图形界面那样寻找一个显眼的……

    2026年7月7日
    14000
  • linux wait命令怎么用?linux wait命令详解

    Linux中的wait命令用于暂停当前Shell脚本的执行,直到指定的后台进程结束,它是确保任务顺序执行和避免资源竞争的关键工具,在Linux系统管理和自动化运维中,并行处理能显著提升效率,但随之而来的资源争用和状态同步问题往往让人头疼,当你需要在一个脚本中同时启动多个耗时任务,并希望在所有任务完成后统一进行日……

    相关资讯 2026年7月5日
    4600
  • linux解除链接怎么操作?linux解除链接命令

    在Linux系统中解除链接主要通过unlink命令删除硬链接或rm命令移除符号链接,操作前务必确认目标类型,避免误删源文件导致数据丢失,很多刚接触Linux的朋友,看到文件管理器里那些带有箭头的小图标或者通过命令行看到的多个文件名指向同一块数据,往往会产生困惑:到底哪个才是真正的“文件”?删了其中一个,另一个还……

    2026年7月6日
    1600
  • Linux WiFi架构是怎样的?Linux WiFi驱动开发流程

    Linux WiFi架构的核心在于将硬件驱动、内核协议栈与用户态管理工具解耦,通过nl80211接口实现高效通信,这是解决现代Linux系统无线连接不稳定和配置复杂的根本方案,在Linux系统中,WiFi不仅仅是插上网线那样简单,它更像是一个精密协作的交响乐团,内核负责底层的信号收发,驱动负责翻译硬件指令,而用……

    2026年7月8日
    12200
  • linux如何安装jstack?jstack命令怎么用

    在Linux系统中,jstack并非独立安装软件,而是JDK或JRE自带的诊断工具,通常位于JDK的bin目录下,直接通过命令行调用即可使用,很多开发者在遇到Java应用CPU飙升、线程阻塞或死锁问题时,第一反应是去“安装”jstack,这种认知偏差往往导致在服务器排查初期浪费大量时间,jstack是Java……

    2026年7月10日
    12500
  • Chrome Linux deb怎么装?linux安装chrome浏览器详细教程

    在Linux系统上安装Chrome浏览器,最直接且稳定的方式是通过Google官方提供的.deb包进行安装,这能确保你获得最新的安全补丁和功能更新,同时完美兼容Ubuntu、Deepin等主流发行版,很多刚接触Linux的用户在面对浏览器选择时,往往会在Firefox和Chrome之间犹豫不决,虽然Firefo……

    2026年7月6日
    1500
  • linux netcat 下载失败怎么办?netcat 命令使用教程

    利用Linux netcat进行文件下载的核心方法是使用“接收端监听端口+发送端连接发送”的单向管道模式,通过重定向符号将数据流保存为本地文件,这是无需HTTP服务即可实现快速内网传输的最简方案,在Linux系统管理中,当目标服务器无法访问外部互联网,或者需要绕过复杂的防火墙策略进行小文件传输时,Netcat……

    2026年7月6日
    3510
  • linux网络延迟高怎么办?如何排查解决网络延迟问题

    Linux网络延迟的核心成因通常在于内核参数配置不当、网络驱动效率低下或硬件瓶颈,通过优化TCP栈、调整中断亲和性及升级网卡驱动,可将延迟降低至微秒级,在服务器运维和云计算场景中,网络延迟往往是那个“看不见却致命”的性能杀手,当你发现API响应变慢、视频通话卡顿或者数据库查询超时,第一反应往往是检查代码逻辑,但……

    2026年7月5日
    13800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注