Skip to content

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 的商业支持。

基于 MIT 协议发布