label
Определяет глобальные метки в виде пар ключ=значение для доступа в конфигурации NGINX и при обработке запросов.
Описание
Директива label в NGINX позволяет определить глобальные пары ключ-значение, к которым можно обращаться во всей конфигурации NGINX с помощью переменных. Каждой метке присваиваются уникальные ключ и значение, причём ключ может состоять только из букв, цифр и символа подчёркивания. Важно: метки нельзя переопределить после их создания. Эта директива действует в контексте http, то есть применяется глобально ко всем блокам server и location, определённым в конфигурации. Значения, присваиваемые меткам, не должны содержать специальные символы, такие как & и =, чтобы сохранять корректный синтаксис и работоспособность при внутренней оценке переменных NGINX.
После настройки определённые метки можно получить с помощью синтаксиса переменных, например $label_key_name, где key_name соответствует идентификатору конкретной метки. Это удобно для использования в разных частях конфигурации, например в логировании, заголовках или при динамической обработке ответов. Кроме того, другая переменная, $labels, собирает все определённые метки в одну строку в формате key1=value1&key2=value2, что упрощает включение всей связанной информации в ответы. Под капотом хранение меток осуществляется с помощью хеш-таблицы, конфигурацию которой можно тонко настроить с помощью дополнительных директив для оптимизации производительности при необходимости.
Пример конфига
http {
label environment production;
label cluster_id my_cluster_id;
label server_region us-east-1;
label server_id my_server_id;
server {
listen 80;
server_name example.com;
location / {
add_header Server-Id $label_server_id;
add_header Cluster-Id $label_cluster_id;
add_header All-Labels $labels;
return 204;
}
}
}Значения меток не могут содержать специальные символы, такие как '&' и '='.
Один и тот же ключ не может быть определён несколько раз; в противном случае при разборе конфигурации возникнет ошибка.
Ключи меток должны начинаться с буквы и могут содержать только буквы, цифры и символы подчёркивания.