Попытка настроить URL-адрес с подстановочным знаком в ingress-nginx kubernetes Ingress для перенаправления на URL-адрес на основе пути, похоже, он не передает значение регулярного выражения с подстановочным знаком.
URL-адрес будет выглядеть примерно так: «https://test.dev.example1.com/admin», и он должен перенаправлять на https://example2.com/папка/тест
Результат, который я получаю, перенаправляется на https://example2.com/папка/
Похоже, я не получаю значение подстановочного знака «тест», поступающее через переменную
Ниже приведен фрагмент Ingress.
Версия API: networking.k8s.io/v1
вид: Вход
метаданные:
имя: образец-сервис-вход
аннотации:
kubernetes.io/ingress.class: nginx
cert-manager.io/issuer: "letsencrypt-production"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/server-snippet: |
имя_сервера ~^(?<имя>[\w-]+)\.dev\.example1\.com$;
расположение/администратор {
вернуть 301 $scheme://example2.com/folder/$name;
}
...
Я также проверил регулярное выражение на regex101.com, и оно выглядит правильным. (минус ~)
Я попробовал несколько вещей, например, взял переменную $name и поместил ее в середину двух других жестко закодированных значений (например, return 301 $scheme://example2.com/folder/begin.$name.end;), которая возвращает «https ://example2.com/folder/begin..end", который возвращает пустое значение или значение NULL между жестко закодированными значениями begin..end.
Я не уверен, правильно ли проходит переменная $name в регулярном выражении. Я не могу увидеть значение.
Я использовал это в отношении следующего в качестве ссылки https://stackoverflow.com/questions/39563071/how-to-get-subdomain-of-url-in-nginx