как переписать целевой контекстный путь внутри и без косой черты?

Я пытаюсь решить маршрутизацию контекста в kubernetes nginx ingress
когда я ввожу контекстный путь /foo/bar в контроллере приложения, получено /bar, это правильно,
но когда я вхожу /foobar в контроллер приложения, получено /bar, но он не должен маршрутизировать.

Я пробую /foo//?(.*) это правильно, но если я ввожу /foo (без косой черты), это становится ошибкой 404

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: hello
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
  - host: hello.info
    http:
      paths:
      -  backend:
           serviceName: hello-svc
           servicePort: 80
         path: /foo/?(.*)

поэтому я ожидаю, что /foo или /foo/ должны перейти к /
и /foo/bar перейти к /bar
и /foobar получить error 404
и /foo/bar/hello должны перейти к /bar/hello


person Jutinant Mahawongsanant    schedule 04.02.2019    source источник
comment
Какую версию контроллера Ingress вы используете?   -  person Crou    schedule 05.02.2019
comment
nginx-вход-контроллер: 0.22.0   -  person Jutinant Mahawongsanant    schedule 05.02.2019
comment
Возможно, это будет полезно   -  person Crou    schedule 07.02.2019


Ответы (1)


Попробуйте вместо этого эту аннотацию:

nginx.ingress.kubernetes.io/rewrite-target: /$2

и следующий путь в config:

 path: /foo(/|$)(.*)
person avadhut007    schedule 27.10.2020
comment
Пробую именно этот подход, но все равно возникает та же ошибка, что и у автора. - person user2273663; 23.02.2021
comment
@ user2273663 вы нашли решение? Имея ту же проблему и вынуждены использовать завершающую косую черту. - person Philipp Möhler; 07.05.2021