首页 > 解决方案 > Istio HTTPRedirect 捕获组支持

问题描述

注意:我感觉 Istio 不支持此功能,但我很好奇除了 NGINX 之外是否还有其他反向代理支持此功能?

我正在尝试将来自 regex: 的请求重定向/abc/(?<appname>.*)?/cba/$appnameIstio 内的 VirtualService 中。这似乎是一个微不足道的问题,因为 Istio 应该取代 NGINX Ingresses,所以似乎在他们的文档中没有太多提及这个问题。

我发现了其他几个提到类似问题的帖子,但我想要一个明确的答案,这是不支持的。

我有以下工作示例,它只是将正则表达式重定向/abc/.*到静态地址/cba/

http:
- match:
  - uri:
      regex: /abc/.*?
    ignoreUriCase: true
  rewrite:
    uri: /cba/
- match: 
  - uri: 
      prefix: /
  route: 
  - destination:
      host: service_name

在 URI 正则表达式中添加捕获组:/abc/(?<hello>.+)?会导致以下错误,尽管正则表达式在语法上是正确的。

gRPC config for type.googleapis.com/envoy.api.v2.RouteConfiguration rejected: Invalid regex '/abc/(?<hello>.+)?': One of *?+{ was not preceded by a valid regular expression.

有什么我遗漏的东西,或者有什么可以找到解决这个问题的方法吗?

另请注意:HTTPRewrite 的文档指出 uri 字段必须是字符串,这也让我担心不支持此功能。

我试过查看 Envoy 的文档,似乎是因为他们不支持它?除了 NGINX 之外,有没有办法从任何反向代理中的正则表达式中提取字段?

标签: kuberneteskubernetes-ingressistioenvoyproxyambassador

解决方案


推荐阅读