注: これは Istio ではサポートされていないように感じますが、NGINX 以外にこの機能をサポートするリバース プロキシがあるかどうか知りたいです。
リクエストを regex:/abc/(?<appname>.*)?
から/cba/$appname
Istio 内の VirtualService にリダイレクトしようとしています。これは、Istio が NGINX Ingress に取って代わることになっていることを考えると些細な問題のように思われるため、この問題についてのドキュメントにはあまり言及されていないようです。
同様の問題に言及している他の投稿をいくつか見つけましたが、明示的な回答が必要です。これはサポートされていません。
/abc/.*
正規表現を静的アドレスにリダイレクトするだけの次の作業例があります/cba/
。
http:
- match:
- uri:
regex: /abc/.*?
ignoreUriCase: true
rewrite:
uri: /cba/
- match:
- uri:
prefix: /
route:
- destination:
host: service_name
URI regex: にキャプチャ グループを追加すると/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以外のリバースプロキシで正規表現からフィールドを抽出する方法はありますか?