Map#
Создает переменные, значения которых зависят от значений других переменных. Создает новую переменную.
Ее значение зависит от первого параметра, заданного строкой с переменными,
например: Здесь переменная Примечание Поскольку переменные вычисляются только в момент использования, само по себе наличие даже большого числа объявлений переменных "map" не влечет за собой никаких дополнительных расходов на обработку запросов. Параметры внутри блока map задают соответствие между исходными и результирующими значениями. Исходные значения задаются строками или регулярными выражениями. Строки проверяются без учета регистра. Перед регулярным выражением ставится символ "~", если при сравнении следует учитывать регистр символов, либо символы "~*", если регистр символов учитывать не нужно. Регулярное выражение может содержать именованные и позиционные выделения, которые могут затем использоваться в других директивах совместно с результирующей переменной. Если исходное значение совпадает с именем одного из специальных параметров, описанных ниже, перед ним следует поставить символ "". В качестве результирующего значения можно указать текст, переменную и их комбинации. Также поддерживаются следующие специальные параметры: задает результирующее значение, если исходное значение не совпадает ни с одним из перечисленных. Если параметр default не указан, результирующим значением по умолчанию будет пустая строка. указывает, что в качестве исходных значений можно использовать маску для первой или последней части имени хоста. Этот параметр следует указывать перед списком значений. Например, Вместо двух записей можно использовать одну: включает файл со значениями. Включений может быть несколько. указывает, что переменная не кэшируется. Если исходному значению соответствует несколько из указанных вариантов, например, одновременно подходят и маска, и регулярное выражение, будет выбран первый подходящий вариант в следующем порядке приоритета: Строковое значение без маски. Самое длинное строковое значение с маской в начале, например " Самое длинное строковое значение с маской в конце, например " Первое подходящее регулярное выражение (в порядке следования в конфигурационном файле). Значение по умолчанию (default). Задает размер корзины в хэш-таблицах для переменных map. Значение по умолчанию зависит от размера строки кэша процессора. Подробнее настройка хэш-таблиц обсуждается отдельно. Задает максимальный размер хэш-таблиц для переменных map. Подробнее настройка хэш-таблиц обсуждается отдельно.Пример конфигурации#
map $http_host $name {
hostnames;
default 0;
example.com 1;
*.example.com 1;
example.org 2;
*.example.org 2;
.example.net 3;
wap.* 4;
}
map $http_user_agent $mobile {
default 0;
"~Opera Mini" 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
*.example.com
".mail.*
".map_hash_bucket_size#
map_hash_max_size#