set

Директива 'set' присваивает значение переменной в контексте конфигурации NGINX. — NGINX HTTP Core

set
serverlocationif in serverif in location
Синтаксисset $variable value;
По умолчаниюnone
Контекстserver, location, if in server, if in location
МодульNGINX HTTP Core
Аргументы2

Описание

Директива 'set' в NGINX позволяет создавать или изменять переменные. Эту директиву можно использовать в различных контекстах, таких как 'server', 'location' и внутри операторов 'if' в этих контекстах. Синтаксис состоит из двух параметров: первый — имя переменной (с префиксом $), второй — значение, которое вы хотите присвоить этой переменной. Например, использование 'set $my_var 'some_value';' создаст переменную с именем 'my_var' и значением 'some_value'. Значение может быть строкой, конкатенацией других переменных или значением, полученным из переменных и настроек NGINX. Поведение директивы 'set' гарантирует, что определённая переменная будет доступна в любом месте указанного контекста, включая вложенные конфигурации. Важно отметить, что после установки переменной последующие директивы 'set' могут изменить её значение, но эти изменения вступают в силу только в том контексте, где они объявлены. Глобальные переменные можно определять в контексте http, тогда как локальные переменные ограничены областью 'location' или 'server'. Кроме того, из-за отсутствия постоянного хранения любые изменения переменных, сделанные в одном запросе, не повлияют на другой запрос, что обеспечивает изоляцию запросов.

Пример конфига

set $my_var 'hello world';

server {
    listen 80;
    location / {
        set $my_var 'example';
        return 200 "$my_var";
    }
}

Переменные, заданные в контексте 'if', могут иметь ограниченную область видимости и не работать так, как ожидается за пределами этого контекста.

Важно использовать правильный синтаксис с символом '$' при указании имён переменных; его отсутствие приведёт к сбою конфигурации.

Убедитесь, что имена переменных не конфликтуют с внутренними переменными NGINX, чтобы избежать непредвиденного поведения.