单服务器下Apache httpd与Tomcat基于AJP的配置(弃用mod_jk)
Apache HTTPD 与 Tomcat 单节点AJP部署配置方案(弃用mod_jk)
前置准备
- 将Tomcat
webapps目录下的frontend1、frontend2文件夹,迁移至Apache的文档根目录(例如Debian/Ubuntu系为/var/www/html/,RHEL/CentOS系为/var/www/html/),由Apache直接托管前端静态资源。 - 保留Tomcat
webapps下的backend目录,继续由Tomcat处理后端业务请求。
Tomcat 配置(确保AJP协议启用)
- 编辑Tomcat的配置文件
conf/server.xml,找到被注释的AJP Connector节点,取消注释并确认配置:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
注:默认端口为8009,若需修改需同步调整后续Apache的转发配置。
- 重启Tomcat服务使配置生效:
# Debian/Ubuntu系 systemctl restart tomcat9 # RHEL/CentOS系 systemctl restart tomcat
Apache HTTPD 配置(用mod_proxy_ajp替代mod_jk)
1. 启用必要模块
确保 mod_proxy 和 mod_proxy_ajp 模块已启用:
# Debian/Ubuntu系执行 a2enmod proxy proxy_ajp # RHEL/CentOS系需检查并加载模块: # 编辑/etc/httpd/conf.modules.d/00-proxy.conf,添加以下两行(若未存在): # LoadModule proxy_module modules/mod_proxy.so # LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
2. 配置请求路由
编辑Apache的主配置文件(如 /etc/httpd/conf/httpd.conf)或虚拟主机配置文件,添加以下规则:
# 设置Apache文档根目录(对应前端资源存放路径) DocumentRoot "/var/www/html" # 后端请求通过AJP转发至Tomcat ProxyPass /backend ajp://localhost:8009/backend ProxyPassReverse /backend ajp://localhost:8009/backend # 配置前端目录的访问权限 <Directory "/var/www/html/frontend1"> AllowOverride All Require all granted </Directory> <Directory "/var/www/html/frontend2"> AllowOverride All Require all granted </Directory>
3. 清理旧配置
移除原配置中与mod_jk相关的所有内容,包括:
LoadModule jk_module modules/mod_jk.so JkWorkersFile /usr/share/tomcat9/conf/workers.properties JkMount /backend app_worker JkMount /backend/* app_worker JkMount /frontend app_worker JkMount /frontend/* app_worker
4. 重启Apache生效
# Debian/Ubuntu系 systemctl restart apache2 # RHEL/CentOS系 systemctl restart httpd
验证配置
- 访问
http://你的服务器IP/frontend1或http://你的服务器IP/frontend2:应直接加载前端静态页面,由Apache响应。 - 访问
http://你的服务器IP/backend:请求将通过AJP转发至Tomcat,返回后端应用的响应。
内容的提问来源于stack exchange,提问作者quangkid
相关产品推荐
相关产品推荐

