Пользовательская переменная между секциями server
Maxim Dounin
mdounin на mdounin.ru
Сб Сен 10 17:16:39 UTC 2022
Hello!
On Fri, Sep 09, 2022 at 03:46:26AM -0400, sunrules wrote:
> Попробовал map, к сожалению, все тоже самое. В основную секцию server, в
> которой определяется server_name, пользовательская переменная передает
> нужное значение, что получаем из map, но если эту переменную прописать в
> секцию server, где описываются бэкенды, то результат - пустое значение.
> Причем, если в map определить значение глобальной переменной, а не той
> строчкой с регуляркой, то тогда в секцию бэкенда значение передается, то
> есть все это работает, но с какими-то странностями.
> Версия Nginx 1.13, такую используем по определенным причинам.
> Ради эксперимента хочу проверить это в более новой версии Nginx.
> Если есть у кого-нибудь мысли, почему такое поведение, буду признателен.
Переменные - это свойство _запроса_. Если вы запрос куда-то
проксируете, пусть даже на тот же самый nginx, они на проксируемый
сервер магически не попадут, там будет новый запрос и новые
переменные.
Если хотите что-то передать на проксируемый сервер - делайте это
явно. Один из наиболее простых способов - добавить в запрос на
проксируемый сервер специальный заголовок с помощью директивы
proxy_set_header, а потом, соответственно, на проксируемом сервере
получить значение этого заголовка с помощью переменной $http_*.
То есть в вашем случае как-то так:
proxy_set_header X-Site-Release $site_release;
и далее на проксиремом сервере:
proxy_pass http://$http_x_site_release.site.back1.example.org/;
Подробнее тут:
http://nginx.org/r/proxy_set_header/ru
http://nginx.org/r/$http_/ru
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru