Traefik ReplacePathRegex 中间件文档
ReplacePathRegex(正则替换路径)
replacePathRegex 中间件会:
- 将匹配的路径替换为指定的路径。
- 将原始路径存储在
X-Replaced-Path头中。
配置示例
YAML 格式:
yaml
# 使用正则替换路径
http:
middlewares:
test-replacepathregex:
replacePathRegex:
regex: "^/foo/(.*)"
replacement: "/bar/$1"TOML 格式:
toml
# 使用正则替换路径
[http.middlewares]
[http.middlewares.test-replacepathregex.replacePathRegex]
regex = "^/foo/(.*)"
replacement = "/bar/$1"Labels 格式:
yaml
# 使用正则替换路径
labels:
- "traefik.http.middlewares.test-replacepathregex.replacepathregex.regex=^/foo/(.*)"
- "traefik.http.middlewares.test-replacepathregex.replacepathregex.replacement=/bar/$$1"Kubernetes 格式:
yaml
# 使用正则替换路径
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: test-replacepathregex
spec:
replacePathRegex:
regex: ^/foo/(.*)
replacement: /bar/$1配置选项
| 字段 | 描述 | 默认值 | 必填 |
|---|---|---|---|
regex | 用于从请求 URL 中匹配和捕获路径的正则表达式。 | "" | 是 |
replacement | 替换路径格式,可以包含捕获的变量。$1x 等同于 ${1x},而不是 ${1}x(参见 Regexp.Expand),因此请使用 ${1} 语法。 | "" | 否 |
提示
可以使用在线工具如 Go Playground 或 Regex101 测试正则表达式和替换。
在 YAML 中定义正则表达式时,任何转义字符都需要双重转义:
example\.com需要写成example\\.com。
在生产环境使用 Traefik OSS?
如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。