Apache 和 Tomcat 整合的基本步骤(以 mod_jk 连接器为例):
- 确保已安装 Apache HTTP Server(httpd) - 确保已安装 Tomcat - 下载 mod_jk 模块(如 mod_jk.so 或编译安装)
- 将 mod_jk.so 放入 Apache 的 modules 目录
- 在 httpd.conf 中添加加载指令:
apache
LoadModule jk_module modules/mod_jk.so
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009 # Tomcat 默认 AJP 端口
worker.worker1.lbfactor=1
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkMount /* worker1 # 将所有请求转发给 Tomcat
# 或指定路径转发:JkMount /webapp/* worker1
- 确认 server.xml 中 AJP 连接器已启用:
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" />
# 重启 Apache
sudo systemctl restart httpd # 或 apache2
# 重启 Tomcat
$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh
验证整合: - 访问 http://your-apache-server 应显示 Tomcat 内容
可选优化配置: 1. 静态文件处理:
JkUnMount /*.jpg worker1
JkUnMount /*.png worker1
JkUnMount /*.css worker1
JkUnMount /*.js worker1
# workers.properties
worker.list=worker1,worker2
worker.worker2.type=ajp13
worker.worker2.host=another-tomcat
worker.worker2.port=8009
# httpd.conf
JkMount /app1* worker1
JkMount /app2* worker2
常见问题排查: 1. 检查 mod_jk 日志(logs/mod_jk.log) 2. 确认端口 8009 是否开放 3. 验证 SELinux/防火墙设置 4. 检查 Apache 错误日志(logs/error_log)
替代方案:也可以使用 mod_proxy_ajp 模块(Apache 2.2+):
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/