Фрагмент конфигурации предназначен для добавления конфигураций в местоположения .
Если вы хотите добавить настраиваемое местоположение в контекст сервера, вы должны использовать вместо него server-snippet :
Используя аннотацию nginx.ingress.kubernetes.io/server-snippet
, можно добавить пользовательскую конфигурацию в блок конфигурации сервера.
Вам также необходимо использовать некоторые модификаторы и регулярное выражение, чтобы оно работало (~*
и ^
).
Должна работать следующая конфигурация:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-configuration-snippet
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
nginx.ingress.kubernetes.io/server-snippet: |
location ~* "^/base/path/v1/api/update" {
deny all;
return 403;
}
spec:
rules:
- http:
paths:
- path: /base/path(/|$)(.*)
backend:
serviceName: myApi
servicePort: 8080
Окончательный nginx.config
должно заканчиваться так:
$ kubectl exec -n kube-system nginx-ingress-controller-6fc5bcc8c9-chkxf -- cat /etc/nginx/nginx.conf
[...]
location ~* "^/base/path/v1/api/update" {
deny all;
return 403;
}
location ~* "^/base/path(/|$)(.*)" {
[...]
}