apache反向代理通过error_page指令捕获502/503/504等错误并切换至本地静态页,需配置error_page指向internal location、准备差异化降级页、确保mod_proxy启用且响应头合规。
apache 反向代理本身不直接“重定向错误页面”,而是通过 error_page 指令捕获后端返回的 http 错误响应(如 502、503、504),再将其无感切换到本地静态友好提示页。关键不是改后端,而是让 apache 在代理失败时主动接管响应。
配置 error_page 捕获代理故障
在 <virtualhost></virtualhost> 或 <location></location> 块中添加:
-
error_page 502 503 504 /fallback.html;—— 指定哪些状态码触发降级 -
location = /fallback.html { root /var/www/html; internal; }——internal确保该页只能被 Nginx/Apache 内部跳转访问,禁止用户直连
准备静态友好提示页
把提示页(如 503-maintenance.html)放在指定目录下,例如:/var/www/html/fallback/503-maintenance.html
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 页面内容应简洁明确:说明服务暂时不可用、预计恢复时间、是否支持刷新或邮件通知
- 避免内联脚本或外部资源(如 CDN 图片、JS),防止降级时二次失败
- 建议统一使用相对路径,不依赖域名或协议
按错误类型提供差异化提示
不同错误码反映不同问题,可分别引导:
-
error_page 502 /fallback/502-backend-down.html;→ 后端进程崩溃或未启动 -
error_page 503 /fallback/503-overload.html;→ 服务过载或主动维护中 -
error_page 504 /fallback/504-timeout.html;→ 后端响应超时,可能是网络或性能瓶颈
确保代理配置不影响错误捕获
error_page 生效前提是 Apache 能真正收到这些错误响应,需确认:
- 已启用
mod_proxy和mod_proxy_http,且ProxyRequests Off已设(防开放代理) - 未用
ProxyBadHeader Ignore过度忽略响应头,否则可能掩盖真实错误码 - 后端返回的是标准 HTTP 状态码(非自定义文本),Apache 才能识别并触发 error_page










