Map#
Создает переменные, значения которых зависят от значений других переменных. Создает новую переменную.
Ее значение зависит от первого параметра, заданного строкой с переменными,
например: Здесь переменная Примечание Поскольку переменные вычисляются только в момент использования, само по себе наличие даже большого числа объявлений переменных "map" не влечет за собой никаких дополнительных расходов на обработку запросов. Параметры внутри блока map задают соответствие между исходными и результирующими значениями. Исходные значения задаются строками или регулярными выражениями. Строки проверяются без учета регистра. Перед регулярным выражением ставится символ "~", если при сравнении следует учитывать регистр символов, либо символы "~*", если регистр символов учитывать не нужно. Регулярное выражение может содержать именованные и позиционные выделения, которые могут затем использоваться в других директивах совместно с результирующей переменной. Если исходное значение совпадает с именем одного из специальных параметров, описанных ниже, перед ним следует поставить символ "". В качестве результирующего значения можно указать текст, переменную и их комбинации. Также поддерживаются следующие специальные параметры: задает результирующее значение, если исходное значение не совпадает ни с одним из перечисленных. Если параметр default не указан, результирующим значением по умолчанию будет пустая строка. указывает, что в качестве исходных значений можно использовать маску для первой или последней части имени хоста. Этот параметр следует указывать перед списком значений. Например, Вместо двух записей можно использовать одну: включает файл со значениями. Включений может быть несколько. указывает, что переменная не кэшируется. Если исходному значению соответствует несколько из указанных вариантов, например, одновременно подходят и маска, и регулярное выражение, будет выбран первый подходящий вариант в следующем порядке приоритета: строковое значение без маски самое длинное строковое значение с маской в начале, например "*.example.com" самое длинное строковое значение с маской в конце, например "mail.*" первое подходящее регулярное выражение (в порядке следования в конфигурационном файле) значение по умолчанию (default) Задает размер корзины в хэш-таблицах для переменных map. Значение по умолчанию зависит от размера строки кэша процессора. Подробнее настройка хэш-таблиц обсуждается отдельно. Задает максимальный размер хэш-таблиц для переменных map. Подробнее настройка хэш-таблиц обсуждается отдельно.Пример конфигурации#
map $remote_addr $limit {
127.0.0.1 "";
default $binary_remote_addr;
}
limit_conn_zone $limit zone=addr:10m;
limit_conn addr 1;
Директивы#
map#
set $var1 "foo";
set $var2 "bar";
map $var1$var2 $new_variable {
default "foobar_value";
}
$new_variable
будет иметь значение,
составленное из двух переменных $var1
и $var2
,
или значение по умолчанию, если эти переменные не определены.default
значениеhostnames
*.example.com 1;
example.* 1;
example.com 1;
*.example.com 1;
.example.com 1;
include
файлvolatile
map_hash_bucket_size#
map_hash_max_size#