Примечание. Мне кажется, что это не поддерживается в Istio, но мне любопытно, поддерживает ли какой-либо другой обратный прокси-сервер эту функцию, кроме NGINX?
Я пытаюсь перенаправить запросы с регулярного выражения: /abc/(?<appname>.*)?
на /cba/$appname
в VirtualService в Istio. Это кажется тривиальной проблемой, если предположить, что 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.
IsЕсть что-то, чего мне не хватает, или какие-либо указатели на поиск решения этой проблемы?
Также обратите внимание: в документации для HTTPRewrite указано, что поле uri должно быть строкой, что также заставляет меня беспокоиться, что эта функция не поддерживается.
Я пытался просмотреть документацию Envoy, и кажется, что они не поддерживают ее? Есть ли способ извлечь поля из регулярного выражения в любом обратном прокси, кроме NGINX?