使用正则表达式捕获块处理 istio 虚拟服务路由规则中的自定义标头和目标特定 URL

问题描述 投票:0回答:0

我有一个自定义标题

test: someothervalues;host:https://test-service:443

如果测试标头的值包含
test
字,我想找到一种方法将请求路由到我的 istio 虚拟服务中的 https://test-service:443 。 我知道我可以使用正则表达式来检查该值是否包含测试词。但是我不知道如何存储捕获块的正则表达式结果以便在目标块中使用它。

所需的模板和结果应如下所示:

yaml 模板

- match:
    - headers:
        test-host:
          regex: .*(^|;)(host:http[s]?:\/\/)(.*test.*):([0-9]*)[;]?.*
  name: to-test-host
  route:
    - destination:
        host: {{capture group 3 of the above regex }}
        port:
          number: {{capture group 4 of the above regex }}

结果

- match:
    - headers:
        test-host:
          regex: .*(^|;)(host:http[s]?:\/\/)(.*test.*):([0-9]*)[;]?.*
  name: to-test-host
  route:
    - destination:
        host: test-service # this is group 3 of the above regex
        port:
          number: 443 # this is group 4 of the above regex
regex yaml istio
© www.soinside.com 2019 - 2024. All rights reserved.