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