Модуль ngx_http_map_module
Модуль 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
string
$variable { ... } |
|---|---|
| По умолчанию: | — |
| Контекст: | http |
Создает новую переменную, значение которой зависит от значений одной или нескольких исходных переменных, указанных в первом параметре.
До версии 0.9.0 в первом параметре можно было указать только одну переменную.
Поскольку переменные вычисляются только при использовании, простое объявление даже большого количества «map» переменных не добавляет дополнительных затрат на обработку запроса.
Параметры внутри блока map задают отображение между исходными и результирующими значениями.
Исходные значения задаются в виде строк или регулярных выражений (0.9.6).
Строки сравниваются без учёта регистра.
Регулярное выражение должно начинаться с символа «~» для чувствительного к регистру сопоставления или с символов «~*» (1.0.4) для сопоставления без учёта регистра. Регулярное выражение может содержать именованные и позиционные захватчики, которые могут быть позже использованы в других директивах вместе с результирующей переменной.
Если исходное значение совпадает с одним из имен специальных параметров, описанных ниже, оно должно быть префиксным символом «\».
Результирующее значение может содержать текст, переменные (0.9.0) и их комбинацию (1.11.0).
Также поддерживаются следующие специальные параметры:
-
defaultvalue - устанавливает результирующее значение, если исходное значение не совпадает ни с одним из указанных вариантов. Если
defaultне указан, по умолчанию результирующее значение будет пустой строкой. hostnames- указывает, что исходные значения могут быть именами хостов с префиксной или суффиксной маской:
*.example.com 1; example.* 1;
Следующие две записиexample.com 1; *.example.com 1;
могут быть объединены:.example.com 1;
Этот параметр должен быть указан перед списком значений. -
includefile - включает файл со значениями. Может быть несколько включений.
volatile- указывает, что переменная не кэшируется (1.11.7).
Если исходное значение совпадает с более чем одним из указанных вариантов, например, как маска, так и регулярное выражение совпадают, будет выбран первый соответствующий вариант в следующем порядке приоритетов:
- строковое значение без маски
- самое длинное строковое значение с префиксной маской, например «
*.example.com» - самое длинное строковое значение с суффиксной маской, например «
mail.*» - первое совпавшее регулярное выражение (в порядке появления в файле конфигурации)
- значение по умолчанию
| Синтаксис: | map_hash_bucket_size size; |
|---|---|
| По умолчанию: | map_hash_bucket_size 32|64|128; |
| Контекст: | http |
Устанавливает размер корзины для хеш-таблиц переменных map. Значение по умолчанию зависит от размера строки кэша процессора. Подробности настройки хеш-таблиц приведены в отдельном документе.
| Синтаксис: | map_hash_max_size size; |
|---|---|
| По умолчанию: | map_hash_max_size 2048; |
| Контекст: | http |
Устанавливает максимальный size хеш-таблиц переменных map. Подробности настройки хеш-таблиц приведены в отдельном документе.
© 2002-2021 Igor Sysoev
© 2011-2024 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/http/ngx_http_map_module.html