注意:我感觉 Istio 不支持此功能,但我很好奇除了 NGINX 之外是否还有其他反向代理支持此功能?
我正在尝试将来自 regex: 的请求重定向/abc/(?<appname>.*)?
到/cba/$appname
Istio 内的 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 之外,有没有办法从任何反向代理中的正则表达式中提取字段?