Пользовательская переменная между секциями 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