Map#
Создает переменные, значения которых зависят от значений других переменных. Создает новую переменную.
Ее значение зависит от первого параметра, заданного строкой с переменными,
например: Здесь переменная Примечание Поскольку переменные вычисляются только в момент использования, само по себе наличие даже большого числа объявлений переменных Параметры внутри блока Исходные значения задаются строками или регулярными выражениями. Строки проверяются без учета регистра. Перед регулярным выражением ставится символ Если исходное значение совпадает с именем одного из специальных параметров,
описанных ниже, перед ним следует поставить символ В качестве результирующего значения можно указать текст, переменную и их комбинации. Также поддерживаются следующие специальные параметры: задает результирующее значение, если исходное значение не совпадает ни с
одним из перечисленных. Если параметр указывает, что в качестве исходных значений можно использовать маску для
первой или последней части имени хоста. Этот параметр следует указывать
перед списком значений. Например, Вместо двух записей можно использовать одну: включает файл со значениями. Включений может быть несколько. указывает, что переменная не кэшируется. Если исходному значению соответствует несколько из указанных вариантов, например, одновременно подходят и маска, и регулярное выражение, будет выбран первый подходящий вариант в следующем порядке приоритета: Cтроковое значение без маски. Самое длинное строковое значение с маской в начале, например Самое длинное строковое значение с маской в конце, например Первое подходящее регулярное выражение (в порядке следования в конфигурационном файле). Значение по умолчанию ( Задает размер корзины в хэш-таблицах для переменных 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
,
или значение по умолчанию, если эти переменные не определены.map
не влечет за собой никаких дополнительных расходов на обработку запросов.map
задают соответствие между исходными и результирующими значениями.~
, если при сравнении
следует учитывать регистр символов, либо символы ~*
, если регистр
символов учитывать не нужно. Регулярное выражение может содержать именованные и
позиционные группы захвата, которые могут затем использоваться в других директивах
совместно с результирующей переменной.\
.default
значениеdefault
не указан,
результирующим значением по умолчанию будет пустая строка.hostnames
*.example.com 1;
example.* 1;
example.com 1;
*.example.com 1;
.example.com 1;
include
файлvolatile
*.example.com
.mail.*
.default
).map_hash_bucket_size#
map_hash_max_size#