Header 操作

Envoy 的 HTTP Connection Manager(HCM)支持在不同层级(全局、虚拟主机、路由、加权集群)对请求和响应头进行添加、移除和修改。常见用途包括:

  • 添加追踪、认证、调试等自定义头
  • 移除敏感或无用头
  • 动态插入变量(如客户端 IP、时间戳等)

配置方法

可用字段:

  • request_headers_to_add / request_headers_to_remove
  • response_headers_to_add / response_headers_to_remove

支持变量插值,如 %DOWNSTREAM_REMOTE_ADDRESS%%START_TIME% 等。

注意:部分伪头(如 :authority:schemehost)不可直接配置修改。

配置优先级:加权集群 < 路由 < 虚拟主机 < 全局。高层级可覆盖低层级。

典型配置示例

route_config:
  response_headers_to_add:
    - header:
        key: "lab"
        value: "3"
  virtual_hosts:
  - name: vh_1
    request_headers_to_add:
      - header:
          key: vh
          value: "one"
    domains: ["*"]
    routes:
      - match:
          prefix: "/json"
        route:
          cluster: single_cluster
        response_headers_to_add:
          - header:
              key: "json"
              value: "%REQ(hello)%"
      - match:
          prefix: "/"
        route:
          cluster: single_cluster

请求 /json 且带 hello: world 头时,响应会包含 json: worldlab: 3 头。

常见头部说明

  • x-request-id:唯一请求标识,便于追踪
  • x-forwarded-for:记录经过的客户端 IP
  • x-envoy-internal/x-envoy-external-address:区分内外部请求

更多变量和头部详见 官方文档

实践建议

  • 头部操作常用于链路追踪、灰度发布、A/B 测试、流量治理等场景
  • 注意头部覆盖顺序,避免无效或冲突
  • 谨慎处理敏感头,防止信息泄露

文章导航

章节内容

这是章节的内容页面。

章节概览