You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Istio VirtualService中添加自定义HTTP请求头及使用动态取值

结论

Istio 1.10.0版本完全支持添加请求头,也支持从现有请求属性中动态取值,不需要额外扩展组件。

配置调整方法

你只需要在原有VirtualService的route.headers配置块下,新增request字段配置请求头操作即可,动态取值使用%REQ(目标请求头名称)%的Envoy表达式语法即可。
调整后的完整配置如下:

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  annotations:
    helm.sh/hook: pre-install, pre-upgrade
  creationTimestamp: "2021-11-22T13:01:36Z"
  generation: 8
  name: direct-vs
  namespace: cvrm
  resourceVersion: "72069"
  selfLink: /apis/networking.istio.io/v1beta1/namespaces/cvrm/virtualservices/cvrm-direct-vs
  uid: d398a13e-fd81-4ada-8e36-617287cae1bc
spec:
  gateways:
  - gateway.istio-system.svc.cluster.local
  hosts:
  - '*'
  http:
  - match:
    - uri:
        prefix: /console
    route:
    - destination:
        host: console-bs.cvrm.svc.cluster.local
        port:
          number: 8087
      headers:
        # 新增请求头操作配置
        request:
          add:
            X-Forwarded-Host: "%REQ(Host)%"
            X-Forwarded-Port: "9090"
            X-Forwarded-Proto: "http"
        # 原有响应头配置保持不变
        response:
          add:
            Custom-Header: test

注意事项

  • 动态取值语法不区分请求头名称大小写,取值为空时会填充空字符串
  • 如果需要覆盖请求中已存在的同名头,将add替换为set即可,add默认是在原有头值后追加新值
  • 除了请求头之外,你也可以使用其他Envoy内置属性实现更丰富的动态取值,例如客户端IP可以用%DOWNSTREAM_REMOTE_ADDRESS_WITHOUT_PORT%,请求路径用%REQ(:PATH)%

内容的提问来源于stack exchange,提问作者Shankar Vignesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:15:04