首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Apache 2.0.53 + Tomcat 5.5.9 整合指南 (Windows 版):最簡單的 JK2 連接器配置

     編輯:Java 相關知識

前言:拒絕過度工程,回歸本質

網路上關於 Apache-Tomcat 整合的教程動輒十幾個步驟、修改十幾個檔案,實則只需三個核心動作。本文記錄親測最小化配置流程,Windows 環境下 10 分鐘搞定靜動態分離。

軟體版本與下載

⚠️ 關鍵相容性:JK2 2.0.4 針對 Apache 2.0.49 編譯,但 2.0.53 實測相容。JDK 需 1.4+。

三步驟整合法

步驟 1:安裝基礎元件

  1. 安裝 JDK 1.4+,設定 `JAVA_HOME`、`PATH`
  2. 安裝 Apache 2.0.53 (預設 `C:\Program Files\Apache Group\Apache2`)
  3. 安裝 Tomcat 5.5.9 (預設 `C:\Program Files\Apache Software Foundation\Tomcat 5.5`)
  4. 解壓 JK2 連接器壓縮包

步驟 2:部署核心模組 (唯一手動複製動作)


# 從 JK2 解壓目錄複製唯一關鍵檔案
copy jakarta-tomcat-connectors-jk2-2.0.4-win32-apache2.0.49\modules\mod_jk2.so ^
     "C:\Program Files\Apache Group\Apache2\modules\mod_jk2.so"

步驟 3:兩個配置檔搞定一切

A. 建立 `workers2.properties` (放在 Apache `conf` 目錄)


# 定義 AJP13 通道指向 Tomcat 原生連接埠 8009
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1

# 定義 worker 使用上述通道
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009

# URI 映射規則:/examples/* 請求轉發給 ajp13 worker
[uri:/examples/*]
worker=ajp13:localhost:8009

關鍵說明:`/examples/*` 對應 Tomcat `webapps/examples` 目錄。實際部署時,將此處改為你的應用 Context Path (如 `/myapp/*`),並確保 Tomcat 同名 Context 存在。

B. 修改 Apache `httpd.conf` 尾部新增


# 載入 JK2 模組
LoadModule jk2_module "modules/mod_jk2.so"

# JK2 配置區塊

    # 指定 workers2.properties 位置 (相對 ServerRoot)
    JkSet config.file conf/workers2.properties

驗證與測試

  1. 啟動 Tomcat:`%CATALINA_HOME%\bin\startup.bat`
  2. 啟動 Apache:`%APACHE_HOME%\bin\ApacheMonitor.exe` 或 `httpd -k start`
  3. 瀏覽器訪問:`https://localhost/examples/`
  4. 看到 Tomcat Examples 頁面即成功!

進階配置:多應用、虛擬主機、靜態資源分離

多 Context 映射


# workers2.properties 追加
[uri:/app1/*]
worker=ajp13:localhost:8009

[uri:/app2/*]
worker=ajp13:localhost:8009

靜態資源由 Apache 直接服務 (效能優化)


# httpd.conf 新增
Alias /myapp/static "C:/Tomcat/webapps/myapp/static"

    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all


# 重要:靜態資源路徑排除 JK2 處理

    JkSet config.file conf/workers2.properties
    # 排除靜態資源
    JkMount /myapp/static/* *
    JkUnMount /myapp/static/*

虛擬主機隔離



    ServerName app1.example.com
    JkMount /app1/* ajp13:localhost:8009



    ServerName app2.example.com
    JkMount /app2/* ajp13:localhost:8009

常見故障排查清單

元件版本關鍵檔案
Apache HTTP Server2.0.53 (Win32)apache_2.0.53-win32-x86-no_ssl.msi
Tomcat Servlet Container5.5.9 (Win32)apache-tomcat-5.5.9.exe
JK2 連接器2.0.4jakarta-tomcat-connectors-jk2-2.0.4-win32-apache2.0.49.zip
現象可能原因排查步驟
404 Not FoundContext Path 不匹配檢查 workers2.properties uri 模式、Tomcat webapps 目錄名、server.xml Context path
500 Internal Server Errormod_jk2 載入失敗檢查 Apache error.log、mod_jk2.so 版本匹配、路徑正確
連接被拒絕Tomcat AJP 埠未啟動檢查 Tomcat server.xml ``、netstat -an | findstr 8009
中文亂碼URI 編碼不一致Tomcat server.xml ``、JK2 `JkOptions +ForwardURICompatUnparsed`
Session 不共享負載均衡無 Session 複製單 Tomcat 無此問題;叢集需配置 `` 或使用 Sticky Session

歷史背景:為什麼是 JK2 而非 mod_jk / mod_proxy_ajp?

JK2 (mod_jk2) 是 Jakarta 專案第二代連接器,引入 `workers2.properties` 宣告式配置、通道/Worker 分離模型、更好的效能。但 JK2 於 2005 年停止維護,現代生產環境建議:

  • Apache 2.2+:使用 `mod_proxy_ajp` (內建模組,零額外安裝)
  • Nginx:`proxy_pass https://tomcat_upstream;` + `upstream` 區塊
  • 云原生:Ingress Controller、Service Mesh (Istio/Linkerd)

本文配置僅供教學、維護舊系統、或單機開發環境參考。生產系統請採用現代反向代理方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved