Spec-Zone.ru › nginx

Модуль ngx_http_map_module

  • Пример конфигурации
  • Директивы
  • map
  • map_hash_bucket_size
  • map_hash_max_size

Модуль 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).

Также поддерживаются следующие специальные параметры:

default value
задает результирующее значение, если исходное значение не соответствует ни одному из указанных вариантов. Если default не указан, результирующим значением по умолчанию будет пустая строка.
hostnames
указывает, что исходные значения могут быть именами хостов с маской-префиксом или маской-суффиксом:
*.example.com 1;
example.*     1;
Следующие две записи
example.com   1;
*.example.com 1;
можно объединить:
.example.com  1;
Этот параметр следует указывать перед списком значений.
include file
подключает файл со значениями. Можно использовать несколько включений.
volatile
указывает, что переменная не кэшируется (1.11.7).

Поиск выполняется в следующем порядке приоритета и прекращается при первом совпадении:

  1. строковое значение без маски
  2. самое длинное строковое значение с маской-префиксом, например «*.example.com»
  3. самое длинное строковое значение с маской-суффиксом, например «mail.*»
  4. первое совпавшее регулярное выражение (в порядке появления в файле конфигурации)
  5. значение по умолчанию
Синтаксис: 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-2026 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/http/ngx_http_map_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API