Модуль 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-2024 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/stream/ngx_stream_map_module.html