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

相关推荐

  • linux怎么取消ip配置?linux删除静态ip地址命令

    在Linux系统中取消或修改IP地址,核心方法是使用ip addr del命令删除现有地址,或通过修改网络配置文件(如Netplan、NetworkManager)永久移除静态IP并切换为DHCP动态获取,很多运维新手在配置服务器时,常常因为IP冲突、网络迁移或者安全策略调整,需要快速释放或更改某个网卡的IP地……

    2026年7月10日
    10600
  • 8核16G服务器能容纳多少人呢,能支持多少用户同时在线?

    8c16g服务器能容纳多少人?核心答案:没有固定数字,取决于业务类型、架构设计和带宽配置,纯静态页面可支撑数千人同时在线,而高并发动态应用可能几十人就能把资源耗尽,8c16g服务器的真实性能画像8核CPU加16GB内存的组合,在云服务器市场中属于中端偏上的配置,放到2026年的技术背景下,一枚主流云厂商的8核处……

    2026年8月10日
    1000
  • 勤哲excel服务器多少钱一套?,最新报价及选购指南

    勤哲Excel服务器的价格并非单一标价,一套基础版的许可费用通常在数千元至两万元区间,但实际投入还需考虑用户数、功能模块、实施服务以及服务器基础设施,综合下来一套完整部署的预算大致在1万到5万元之间,勤哲Excel服务器的价格构成软件许可费用勤哲Excel服务器按用户数授权,基础版支持少量用户,费用在几千元;标……

    2026年8月21日
    300
  • 4u服务器一台要多少钱,报价受哪些因素影响?

    一台4U服务器到底多少钱?结论是:如果只买准系统,四五千元可以拿到入门款;如果按主流双路配置配齐,预算通常在2万到6万之间;如果选知名品牌整机,高配版可能突破10万元,这个差异比普通电脑大得多,因为4U服务器本身只是“一张白纸”,真正决定价格的是你往里面填什么,下面从成本结构、购买渠道、品牌溢价三个维度拆开讲……

    2026年8月21日
    300
  • 开发一款APP软件服务器究竟多少钱,一年费用多少?

    开发一款App的服务器费用没有固定答案,但多数项目的预算集中在每年几千元到数万元之间,具体取决于用户规模、功能复杂度和部署架构,开发一款App的服务器费用到底花在哪很多创业者把“服务器费用”想象成一个简单的租赁价格,实际拆开后涉及至少四个独立计费维度,任何一个维度都能让总账单翻倍,第一块:云服务器的基础租赁成本……

    2026年8月21日
    300
  • 200M网络服务器价格是多少?,哪家性价比高?

    一台200M网络服务器的月租费用通常在800元到3000元之间,具体取决于硬件配置、带宽类型和机房线路, 在租用服务器时,价格是核心考量,但不少用户对200M带宽的实际价值缺乏概念,下面从价格构成、应用场景和选购要点三个维度,帮你理清这笔投入,200m网络服务器多少钱一个?价格构成拆解要回答“200m网络服务器……

    2026年7月26日
    200
  • ibm服务器小型机价格如何,回收一吨值多少钱?

    IBM服务器小型机不按“吨”计价,但若按回收场景粗算,一台典型小型机连同机架、电源等配件,拆解后每吨估值约在2万至6万元人民币区间,具体取决于配置、年代与成色,为什么有人会问“服务器多少钱一吨”搜索“IBM服务器小型机多少钱一吨”的人,多数不是要买新机器,而是处理退役设备,这个问法源于废品回收行业的习惯——按重……

    2026年8月8日
    500
  • 我的世界20人服务器租用一年多少钱?,哪个平台最便宜?

    我的世界20人服务器月租费用通常在50元至200元之间,具体取决于核心配置、带宽需求以及服务商运营资质, 这个价格范围覆盖了从入门级生存服到模组小游戏服的不同场景,但价格背后,稳定性和售后同样关键,尤其对于打算长期运营的服主,影响20人MC服务器价格的核心因素硬件配置决定基础性能MC服务端对CPU单核频率敏感……

    2026年8月18日
    600
  • 我的世界服务器一般多少g防御?多少g防御够用?

    防御能力取决于攻击类型,Minecraft服务器一般建议从10Gbps起步,小型模组服或生存服20Gbps是安全基线,大型群组服或公益服建议50Gbps以上,核心指标是看服务商是否提供真实独享防御和清洗能力,Minecraft服务器防御的本质很多服主把防御简单理解为“多少G”,但实际运营中,防御值代表的是服务商……

    2026年8月17日
    600
  • linux显卡驱动卡死怎么解决?linux显卡驱动安装失败怎么办

    在Linux系统中,显卡驱动安装失败或性能异常通常源于内核版本不匹配、专有驱动未正确加载或开源驱动Nouveau冲突,通过禁用Nouveau、安装专有驱动并验证CUDA环境即可解决绝大多数问题,Linux下的显卡生态远比Windows复杂,尤其是面对NVIDIA和AMD这两大阵营时,策略截然不同,很多用户在初次……

    2026年7月8日
    7100

发表回复

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