Traefik Headers 中间件文档
Headers(请求/响应头)
Headers 中间件管理请求和响应的头信息。
默认添加的转发头
默认情况下,代理请求时会自动添加以下头:
| 属性 | HTTP 头 |
|---|---|
| 客户端 IP | X-Forwarded-For, X-Real-Ip |
| 主机 | X-Forwarded-Host |
| 端口 | X-Forwarded-Port |
| 协议 | X-Forwarded-Proto |
| 代理服务器的主机名 | X-Forwarded-Server |
配置示例
添加请求头和响应头
下面的示例为代理请求添加 X-Script-Name 头,为响应添加 X-Custom-Response-Header 头。
YAML 格式:
yaml
http:
middlewares:
testHeader:
headers:
customRequestHeaders:
X-Script-Name: "test"
customResponseHeaders:
X-Custom-Response-Header: "value"Kubernetes 格式:
yaml
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: test-header
spec:
headers:
customRequestHeaders:
X-Script-Name: "test"
customResponseHeaders:
X-Custom-Response-Header: "value"添加和删除头
下面的示例中,代理请求时会增加 X-Script-Name 头、去除 X-Custom-Request-Header 头;响应会去除 X-Custom-Response-Header 头。
yaml
http:
middlewares:
testHeader:
headers:
customRequestHeaders:
X-Script-Name: "test" # 添加
X-Custom-Request-Header: "" # 删除
customResponseHeaders:
X-Custom-Response-Header: "" # 删除配置选项
customRequestHeaders
| 字段 | 描述 | 默认值 | 必填 |
|---|---|---|---|
customRequestHeaders | 要在请求发送到后端服务之前设置/添加/移除的头。键是头名称,值是头值。若要删除头,将值留空。 | {} | 否 |
customResponseHeaders
| 字段 | 描述 | 默认值 | 必填 |
|---|---|---|---|
customResponseHeaders | 要在响应发送到客户端之前设置/添加/移除的头。 | {} | 否 |
安全相关选项
| 字段 | 描述 | 默认值 | 必填 |
|---|---|---|---|
accessControlAllowCredentials | 允许凭证(cookie、TLS 客户端证书等)随跨域请求一起发送。更多信息参见 CORS。 | false | 否 |
accessControlAllowHeaders | 允许的请求头字段名称。 | [] | 否 |
accessControlAllowMethods | 允许的 HTTP 方法。 | [] | 否 |
accessControlAllowOrigin | 允许的来源 URI。可以使用 * 字符。 | "" | 否 |
accessControlExposeHeaders | 允许浏览器访问的响应头字段。 | [] | 否 |
accessControlMaxAge | 预检请求的缓存时长。 | 0 | 否 |
addVaryHeader | 启用 Vary: Origin 头。 | false | 否 |
frameDeny | 移除/添加 X-Frame-Options 头。 | false | 否 |
stsSeconds | 设置 Strict-Transport-Security 头的 max-age 值。 | 0 | 否 |
stsIncludeSubdomains | 将 includeSubDomains 指令添加到 STS 头。 | false | 否 |
stsPreload | 将 preload 指令添加到 STS 头。 | false | 否 |
forceSTSHeader | 强制添加 STS 头(即使连接是 HTTP)。 | false | 否 |
contentTypeNosniff | 添加 X-Content-Type-Options: nosniff。 | false | 否 |
browserXssFilter | 添加 X-XSS-Protection: 1; mode=block。 | false | 否 |
customFrameOptionsValue | 自定义 X-Frame-Options 头的值。 | "" | 否 |
contentSecurityPolicy | 设置 Content-Security-Policy 头。 | "" | 否 |
contentSecurityPolicyReportOnly | 设置 Content-Security-Policy-Report-Only 头。 | false | 否 |
publicKey | 启用 HPKP(HTTP 公钥固定)头。 | "" | 否 |
referrerPolicy | 设置 Referrer-Policy 头。 | "" | 否 |
permissionsPolicy | 设置 Permissions-Policy 头。 | "" | 否 |
isDevelopment | 启用开发模式(在生产环境不要使用此选项)。 | false | 否 |
SSL 重定向相关
| 字段 | 描述 | 默认值 | 必填 |
|---|---|---|---|
sslRedirect | 仅限 308 重定向到 HTTPS。 | false | 否 |
sslTemporaryRedirect | 302 重定向到 HTTPS。 | false | 否 |
sslHost | 重定向到指定主机。 | "" | 否 |
sslProxyHeaders | 用于指示请求是否为 HTTPS 的头。 | {} | 否 |
在生产环境使用 Traefik OSS?
如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。