Модуль ngx_http_map_module создаёт переменные,
значения которых зависят от значений других переменных.
Пример конфигурации
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
строка
$переменная { ... }
|
умолчание:
|
—
|
контекст:
|
http
|
Создаёт новую переменную, значение которой
зависит от значений одной или более исходных переменных,
указанных в первом параметре.
Параметры внутри блока map задают соответствие
между исходными и результирующими значениями.
Исходные значения задаются строками или регулярными выражениями (0.9.6).
Перед регулярным выражением ставится символ “~ ”,
если при сравнении следует учитывать регистр символов, либо символы
“~* ” (1.0.4), если регистр символов учитывать не нужно.
Регулярное выражение может содержать именованные и позиционные выделения,
которые могут затем использоваться в других директивах совместно с
результирующей переменной.
Если исходное значение совпадает с именем одного из специальных параметров,
описанных ниже, перед ним следует поставить символ “\ ”.
В качестве результирующего значения можно указать строку
или другую переменную (0.9.0).
Директива также поддерживает три специальных параметра:
default значение
-
задаёт результирующее значение, если исходное значение не
совпадает ни с одним из перечисленных.
Если параметр
default не указан, результирующим значением
по умолчанию будет пустая строка.
hostnames
-
указывает, что в качестве исходных значений можно
использовать маску для первой или последней части имени хоста, например,
*.example.com 1;
example.* 1;
Вместо двух записей
example.com 1;
*.example.com 1;
можно использовать одну:
.example.com 1;
Этот параметр следует указывать перед списком значений.
include файл
-
включает файл со значениями.
Включений может быть несколько.
Если исходному значению соответствует несколько из указанных вариантов,
например, одновременно подходят и маска, и регулярное выражение,
будет выбран первый подходящий вариант в следующем порядке приоритета:
-
строковое значение без маски
-
самое длинное строковое значение с маской в начале,
например “
*.example.com ”
-
самое длинное строковое значение с маской в конце,
например “
mail.* ”
-
первое подходящее регулярное выражение
(в порядке следования в конфигурационном файле)
-
значение по умолчанию (
default )
синтаксис:
|
map_hash_bucket_size размер ;
|
умолчание:
|
map_hash_bucket_size 32|64|128;
|
контекст:
|
http
|
Задаёт размер корзины в хэш-таблицах для переменных map.
Значение по умолчанию зависит от размера строки кэша процессора.
Подробнее настройка хэш-таблиц обсуждается в отдельном
документе.
синтаксис:
|
map_hash_max_size размер ;
|
умолчание:
|
map_hash_max_size 2048;
|
контекст:
|
http
|
Задаёт максимальный размер хэш-таблиц для переменных map.
Подробнее настройка хэш-таблиц обсуждается в отдельном
документе.
|