核心思路是前置拦截+配置调整:通过nginx全局302跳转至独立维护页,或tomcat配置503错误页、临时替换root应用,确保维护页与tomcat运行环境解耦,升级完成快速恢复。

在Tomcat服务升级期间显示统一维护公告页面,核心思路是**让所有请求临时跳转或响应一个静态HTML页面**,同时不影响后续正常服务恢复。这不是靠“部署新应用”实现的,而是通过**前置拦截+配置调整**完成的,操作简单、生效快、无需重启应用。
用HTTP重定向快速启用维护页
最轻量的方式是在Tomcat前端(如Nginx、Apache HTTP Server)配置全局302跳转,把所有流量导向一个维护页:
- 准备一个纯HTML维护页(如
/var/www/maintenence.html),内容简洁明确,含预计恢复时间 - Nginx中添加:
location / { return 302 /maintenance.html; }location = /maintenance.html { root /var/www; } - 升级完成后再注释或删除该配置,reload Nginx即可
用Tomcat内置错误页接管404/503(无前置代理时)
若无反向代理,可临时修改Tomcat的全局错误响应:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 编辑
$CATALINA_HOME/conf/web.xml - 在
<web-app></web-app>内添加:<error-page><br> <error-code>503</error-code><br> <location>/maintenance.html</location><br></error-page>
- 将维护页放入
$CATALINA_HOME/webapps/ROOT/maintenance.html - 升级前执行:
curl -X GET http://localhost:8080/actuator/health -I确认服务已停,再手动触发503(例如停掉应用或删掉webapps/ROOT)
用临时ROOT应用覆盖默认首页
适用于需完全屏蔽原应用、且允许短暂停机的场景:
- 停止Tomcat服务
- 清空
$CATALINA_HOME/webapps/ROOT目录 - 放入一个仅含
index.html的ROOT文件夹,内容为维护公告 - 启动Tomcat —— 所有根路径请求(如
/、/login)都会返回该页面,除非URL明确指向其他context path - 升级完成后,替换回原ROOT或还原备份即可
配合健康检查实现自动切换(推荐用于生产)
若使用负载均衡器(如F5、AWS ALB),可设置健康检查路径(如/health)返回503,LB自动将流量切到维护页或备用集群:
- 升级前,在应用层让
/health接口固定返回HTTP 503+ JSON说明 - LB检测失败后,将用户请求转发至预设的维护页服务器
- 升级完成并验证后,恢复
/health返回200,LB自动切回
不复杂但容易忽略:维护页本身要独立于Tomcat运行环境(比如放在Nginx或CDN上),避免因Tomcat异常导致维护页也无法访问。










