Попытка настроить подстановочный URL-адрес в ingress-nginx kubernetes Ingress для перенаправления на URL-адрес на основе пути, похоже, не передает подстановочное значение регулярного выражения.
URL-адрес будет выглядеть примерно так: «https://test.dev.example1.com/admin», и он должен перенаправлять наhttps://example2.com/folder/test
Результат, который я получаю, — перенаправление наhttps://example2.com/folder/
Похоже, я не получаю подстановочное значение «test» как переменную.
Ниже представлен фрагмент Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sample-service-ingress
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/issuer: "letsencrypt-production"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/server-snippet: |
server_name ~^(?<name>[\w-]+)\.dev\.example1\.com$;
location /admin {
return 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 var в регулярном выражении передается правильно. Я не вижу значения.
Я использовал это в качестве ссылки по отношению к следующемуhttps://stackoverflow.com/questions/39563071/how-to-get-subdomain-of-url-in-nginx