Я пытаюсь получить правило входа для маршрутизации заголовка с помощью nginx. Почему ? Потому что тот же путь должен go до другой бэкэнд на основе заголовков . Вот что я пробовал:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: api-mutli-back
annotations:
nginx.ingress.kubernetes.io/configuration-snippet: |
set $dataflag 0;
if ( $http_content_type ~ "multipart\/form-data.*" ){
set $dataflag 1;
}
if ( $dataflag = 1 ){
set $service_name "backend-data";
}
spec:
rules:
- host: example.com
http:
paths:
- backend:
serviceName: backend-default
servicePort: 80
path: /api
Но журналы nginx выдают эту ошибку:
unknown directive "set $service_name backend-data" in /tmp/nginx-cfg864446123:1237
, что мне кажется нелогичным c ... Если я проверю конфигурация, сгенерированная nginx, каждое правило генерирует местоположение с чем-то вроде этого в начале:
[...]
location ~* "^/api" {
set $namespace "my-namespace";
set $ingress_name "api-multi-back";
set $service_name "backend-default";
[...]
Что я делаю не так? Разве нельзя переопределить переменную имя_службы с аннотацией фрагмент конфигурации ? Есть ли другой способ?
Редактировать: Моя ошибка на стороне nginx была вызвана отсутствием точных пробелов между set $ service_name и backend-data . Затем nginx правильно сгенерировал конфигурацию, но все равно не перенаправил ее в другую службу kubernetes.