配置Apache与Tomcat部署WAR后域名显示Apache测试页问题
这种情况我之前碰到过好几次,大概率是Apache的请求转发规则没配置到位,或者mod_jk的关联逻辑没生效。咱们一步步来定位问题:
1. 先确认mod_jk模块是否真的加载成功
先执行命令检查Apache是否加载了mod_jk模块:
httpd -M | grep jk
如果输出里没有jk_module (shared),说明mod_jk要么没安装,要么httpd.conf里的加载配置有问题。你需要检查httpd.conf中是否存在这行:
LoadModule jk_module modules/mod_jk.so
注意modules/mod_jk.so的路径要和你实际的mod_jk文件路径一致。
2. 验证workers.properties配置的正确性
确保workers.properties里的Tomcat节点配置准确,比如:
worker.list=worker1 worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=8009
同时要确认httpd.conf里指定了workers.properties的正确路径,比如:
JkWorkersFile /etc/httpd/conf/workers.properties
(路径根据你实际存放workers.properties的位置调整)
3. 重点检查Apache的请求转发规则
这是最容易踩坑的地方!你需要明确告诉Apache:哪些请求要转发给Tomcat。
- 如果想让整个域名的请求都转发到Tomcat,在httpd.conf或对应虚拟主机配置里添加:
JkMount /* worker1 - 如果你的WAR部署后访问路径是
/FINAL_WE(Tomcat会自动解压WAR为同名目录),就只转发这个路径的请求:JkMount /FINAL_WE/* worker1
特别注意:如果你的域名配置了虚拟主机(<VirtualHost>块),一定要把转发规则写在对应的虚拟主机配置里,否则全局配置可能被虚拟主机的规则覆盖。
4. 检查Apache默认页面的优先级
Apache默认会优先加载根目录下的index.html(也就是那个测试页),如果你的Tomcat项目默认页是index.jsp或其他,需要调整DirectoryIndex的顺序:
DirectoryIndex index.jsp index.html
或者干脆删除Apache根目录下的测试用index.html文件。
5. 确认Tomcat本身能正常提供服务
先绕开Apache,直接访问Tomcat的端口验证项目是否正常:
http://你的服务器IP:8080/FINAL_WE
如果能正常打开你的项目,说明Tomcat部署没问题,问题100%出在Apache的转发配置上;如果打不开,再回头检查catalina.out日志里的部署细节。
6. 重启服务的正确顺序
建议按这个顺序操作,避免Tomcat未就绪时Apache就开始转发请求:
- 停止Tomcat:
sh /opt/code/apache-tomcat-8.5.54/bin/shutdown.sh - 停止Apache:
service httpd stop - 启动Tomcat,等catalina.out日志显示
Server startup in XXXX ms确认启动完成 - 启动Apache:
service httpd start
内容的提问来源于stack exchange,提问作者user12225102

