Модуль ngx_stream_map_module
Модуль ngx_stream_map_module (1.11.2) создаёт переменные, значения которых зависят от значений других переменных.
Пример конфигурации
map $remote_addr $limit {
127.0.0.1 "";
default $binary_remote_addr;
}
limit_conn_zone $limit zone=addr:10m;
limit_conn addr 1;
Директивы
| Синтаксис: | map
string
$variable { ... } |
|---|---|
| По умолчанию: | — |
| Контекст: | stream |
Создаёт новую переменную, значение которой зависит от значений одной или нескольких исходных переменных, указанных в первом параметре.
Поскольку переменные вычисляются только при использовании, само по себе объявление даже большого числа переменных «map» не увеличивает затраты на обработку соединений.
Параметры внутри блока map задают соответствие между исходными и результирующими значениями.
Исходные значения задаются в виде строк или регулярных выражений.
При сопоставлении строк регистр не учитывается.
Регулярное выражение должно начинаться либо с символа «~» для сопоставления с учётом регистра, либо с символов «~*» для сопоставления без учёта регистра. Регулярное выражение может содержать именованные и позиционные захваты, которые затем можно использовать в других директивах вместе с результирующей переменной.
Если исходное значение совпадает с одним из имён специальных параметров, описанных ниже, перед ним следует поставить символ «\».
Результирующее значение может содержать текст, переменные и их сочетания.
Также поддерживаются следующие специальные параметры:
-
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; |
| Контекст: | stream |
Задаёт размер корзины для хеш-таблиц переменных map. Значение по умолчанию зависит от размера строки кэша процессора. Подробная информация о настройке хеш-таблиц приведена в отдельном документе.
| Синтаксис: | map_hash_max_size size; |
|---|---|
| По умолчанию: | map_hash_max_size 2048; |
| Контекст: | stream |
Задаёт максимальный size хеш-таблиц переменных map. Подробная информация о настройке хеш-таблиц приведена в отдельном документе.
© 2002-2021 Igor Sysoev
© 2011-2026 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/stream/ngx_stream_map_module.html