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-2024 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