Я хочу, чтобы мой Ingress (NGINX) фильтровал по IP-адресу источника и показывал базовую аутентификацию перед проксированием к сервису.Хотя это довольно просто, сложная часть состоит в том, что я хочу, чтобы он делал это только, если URL содержит специальный символ в пути.
Позволяет сказать, что я хочу защитить все пути, начинающиеся с "+«перед тем, как передать их правильному сервису.С другой стороны, я все еще хочу, чтобы пути, которые не начинались с «+», направлялись (без базовой аутентификации) к одной и той же службе.Также не следует изменять URL-адрес, который увидит служба.
Примеры могут быть:
/serviceA/what/ever -> http://192.168.0.2/what/ever
/serviceA/what/+ever -> BASIC_AUTH -> http://192.168.0.2/what/+ever
/serviceB/what/ever -> http://192.168.0.3/what/ever
/serviceB/+what/ever -> BASIC_AUTH -> http://192.168.0.3/+what/ever
Возможно ли добиться этого либо в Ingress, либо, по крайней мере, в конфигурации NGINX?Регулярное выражение для пути URL также довольно просто в NGINX, но возможно ли это без дублирования всех записей пути, а также без добавления второго прокси-сервера nginx впереди?
Идеальное решение было бы в конфигурации Ingress yml, но яЯ более знаком с NGINX, поэтому вот пример того, чего я хочу достичь в NGINX-синтаксисе:
Location ~ /+ {
auth_basic ...;
auth_basic_user_file ...;
< route it somehow to the similar location as it would have no +, but don't cut out the + >
}
Location /serviceA {
proxy_pass ...;
}
... more Locations ...
Или в Ingress что-то похожее с путями-записями.