@EmachinesDIMA
junior DevOps

Как обыграть передачу переменных в конфиг nginx из ConfigMap с env переменными для set upstream переадресации между сервисами?

Вероятно перемудрил с заголовком, но постараюсь исправить в описании.

Есть 2 сервиса. Один фронтенд с react+nginx , который обрабатывает не корневые запросы а-ля "domain.ru/cabinet", есть второй сервис worpress с php-fpm который обрабытывает корневые запросы.

Всё работает в контейнерах и запускали с docker-compose. Разделение монолита и связь между контейнерами определил как настройку nginx:
set $front_react frontend_${BRANCH_NAME}_react_nginx;

    location ~ \.html$ {
        proxy_pass http://$front_react;
    }


где frontend_${BRANCH_NAME}_react_nginx есть имя контейнера. Для wordpress аналогично.

Вот создал я объекты кубера, но при запуске nginx получаю ошибку: BRANCH_NAME не известна
nginx: [emerg] unknown "branch_name" variable

, при том, что я определил её в ConfigMap и примонтировал как том в Deployment.

Как правильно передать переменную в конфиг nginx, который я могу передать при сборке :
1) передать в Dockerfile ---
COPY default.conf /etc/nginx/conf.d/default.conf
2) записать в configmap как data ---
data:
  BRANCH_NAME: pp-3223
  default.conf: |
    server { ....
    }


и избежать проблем с передачей переменных?
  • Вопрос задан
  • 506 просмотров
Ответы на вопрос 1
karabanov
@karabanov
Системный администратор
Да, переменная действительно должна быть определена. Можно её определять по средствам изменения server_name на регулярку с именованными группами:

# это пример регулярку надо поменять под свои нужды
server_name ~(?<branch_name>[^\.]*)\.(?<tld>[^\.]*)$;

location ~ \.html$ {
    proxy_pass http://frontend_${branch_name}_react_nginx;
}
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы