Traefik ErrorPages 中间件文档
ErrorPages(错误页)
errors 中间件根据配置的 HTTP 状态码范围返回自定义错误页,替代默认错误页。
配置示例
YAML 格式:
yaml
# 为 5XX 状态码(排除 502 和 504)提供动态自定义错误页
http:
middlewares:
test-errors:
errors:
status:
- "500"
- "501"
- "503"
- "505-599"
statusRewrites:
"418": 404
"502-504": 500
service: error-handler-service
query: "/{status}.html"
services:
# ... error-handler-service 的定义Kubernetes 格式:
yaml
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: test-errors
spec:
errors:
status:
- "500"
- "501"
- "503"
- "505-599"
statusRewrites:
"418": 404
"502-504": 500
service: error-handler-service
query: "/{status}.html"配置选项
| 字段 | 描述 | 默认值 | 必填 |
|---|---|---|---|
status | 要应用自定义错误页的 HTTP 状态码列表。可以使用范围如 "500-599"。 | [] | 否 |
statusRewrites | 将状态码映射到另一个状态码的字典。键可以是单个状态码或范围,值是目标状态码。 | {} | 否 |
service | 用于提供自定义错误页的服务名。该服务必须被定义。 | - | 是 |
query | 用于访问自定义错误页的查询模板,{status} 会被替换为实际的状态码。 | "" | 否 |
状态码重写
statusRewrites 允许在处理之前将某些状态码重写为其他状态码。示例:
"418": 404将把 418 状态码重写为 404。"502-504": 500将把 502 到 504 范围的状态码重写为 500。
自定义错误服务
error-handler-service 必须是一个有效的、已就绪的服务。一种常见做法是创建一个简单服务,托管静态 HTML 错误页,并通过 {status} 模板参数动态提供不同状态码对应的错误页。
提示
- 在使用该中间件时,应确保错误处理服务是健壮的,因为它是最后一道防线。
- 如果错误处理服务本身不可用,Traefik 将退回到默认错误页。
在生产环境使用 Traefik OSS?
如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。