Во-первых, вы можете использовать пользовательскую конфигурацию для вашего входного контроллера nginx, документацию можно найти здесь
Также, если вы просто хотите использовать входной контроллер nginx в качестве обратного прокси-сервера, каждый входПравило уже создает директиву proxy_pass
для соответствующей службы upstream / backend.
И если пути совпадают с вашим правилом и бэкэнд-сервисом, вам не нужно указывать правило перезаписи, только путь к бэкэнд-сервису.Но если пути разные, то рассмотрите возможность использования аннотации nginx.ingress.kubernetes.io/rewrite-target
, в противном случае вы получите 404 backend
error
Таким образом, чтобы перенаправить запрос, поступающий во внешний интерфейс http://example.com/something
, на внутренний example-com/something
, ваш входПравило должно быть таким, как показано ниже
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: gpg-app-ingress
annotations:
kubernetes.io/ingress.class: nginx
#nginx.ingress.kubernetes.io/rewrite-target: /different-path
spec:
rules:
- host: example.com
http:
paths:
- path: /something
backend:
serviceName: example-com
servicePort: 80
Для более подробного объяснения аннотаций, проверьте Входные аннотации Nginx
Также рассмотрите возможность проверки журналов модуля nginx-ingress-controller черезесли что-то не так
kubectl logs nginx-ingress-controller-xxxxx
Надеюсь, это поможет!