view xml/ru/docs/http/ngx_http_map_module.xml @ 2769:16f6fa718be2

Updated TLSv1.3 support notes. Previous notes described some early development snapshot of OpenSSL 1.1.1 with disabled TLSv1.3 by default. It was then enabled in the first alpha. Further, the updated text covers later major releases such as OpenSSL 3.0.
author Sergey Kandaurov <pluknet@nginx.com>
date Thu, 30 Sep 2021 16:29:20 +0300
parents c6b5826b64f7
children
line wrap: on
line source

<?xml version="1.0"?>

<!--
  Copyright (C) Igor Sysoev
  Copyright (C) Nginx, Inc.
  -->

<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">

<module name="Модуль ngx_http_map_module"
        link="/ru/docs/http/ngx_http_map_module.html"
        lang="ru"
        rev="5">

<section id="summary">

<para>
Модуль <literal>ngx_http_map_module</literal> создаёт переменные,
значения которых зависят от значений других переменных.
</para>

</section>


<section id="example" name="Пример конфигурации">

<para>
<example>
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;
}
</example>
</para>

</section>


<section id="directives" name="Директивы">

<directive name="map">
<syntax block="yes">
    <value>строка</value>
    <value>$переменная</value></syntax>
<default/>
<context>http</context>

<para>
Создаёт новую переменную, значение которой
зависит от значений одной или более исходных переменных,
указанных в первом параметре.
<note>
До версии 0.9.0 в качестве первого параметра можно было
указать только одну переменную.
</note>
</para>

<para>
<note>
Поскольку переменные вычисляются только в момент использования,
само по себе наличие даже большого числа объявлений переменных
“<literal>map</literal>” не влечёт за собой никаких дополнительных
расходов на обработку запросов.
</note>
</para>

<para>
Параметры внутри блока <literal>map</literal> задают соответствие
между исходными и результирующими значениями.
</para>

<para>
Исходные значения задаются строками или регулярными выражениями (0.9.6).
</para>

<para>
Строки проверяются без учёта регистра.
</para>

<para>
Перед регулярным выражением ставится символ “<literal>~</literal>”,
если при сравнении следует учитывать регистр символов, либо символы
“<literal>~*</literal>” (1.0.4), если регистр символов учитывать не нужно.
Регулярное выражение может содержать именованные и позиционные выделения,
которые могут затем использоваться в других директивах совместно с
результирующей переменной.
</para>

<para>
Если исходное значение совпадает с именем одного из специальных параметров,
описанных ниже, перед ним следует поставить символ “<literal>\</literal>”.
</para>

<para>
В качестве результирующего значения можно указать текст,
переменную (0.9.0) и их комбинации (1.11.0).
</para>

<para>
Также поддерживаются следующие специальные параметры:
<list type="tag">
<tag-name><literal>default</literal> <value>значение</value></tag-name>
<tag-desc>
задаёт результирующее значение, если исходное значение не
совпадает ни с одним из перечисленных.
Если параметр <literal>default</literal> не указан, результирующим значением
по умолчанию будет пустая строка.
</tag-desc>

<tag-name><literal>hostnames</literal></tag-name>
<tag-desc>
указывает, что в качестве исходных значений можно
использовать маску для первой или последней части имени хоста, например,
<example>
*.example.com 1;
example.*     1;
</example>
Вместо двух записей
<example>
example.com   1;
*.example.com 1;
</example>
можно использовать одну:
<example>
.example.com  1;
</example>
Этот параметр следует указывать перед списком значений.
</tag-desc>

<tag-name><literal>include</literal> <value>файл</value></tag-name>
<tag-desc>
включает файл со значениями.
Включений может быть несколько.
</tag-desc>

<tag-name id="volatile"><literal>volatile</literal></tag-name>
<tag-desc>
указывает, что переменная не кэшируется (1.11.7).
</tag-desc>

</list>
</para>

<para>
Если исходному значению соответствует несколько из указанных вариантов,
например, одновременно подходят и маска, и регулярное выражение,
будет выбран первый подходящий вариант в следующем порядке приоритета:
<list type="enum">

<listitem>
строковое значение без маски
</listitem>

<listitem>
самое длинное строковое значение с маской в начале,
например “<literal>*.example.com</literal>”
</listitem>

<listitem>
самое длинное строковое значение с маской в конце,
например “<literal>mail.*</literal>”
</listitem>

<listitem>
первое подходящее регулярное выражение
(в порядке следования в конфигурационном файле)
</listitem>

<listitem>
значение по умолчанию (<literal>default</literal>)
</listitem>

</list>
</para>

</directive>


<directive name="map_hash_bucket_size">
<syntax><value>размер</value></syntax>
<default>32|64|128</default>
<context>http</context>

<para>
Задаёт размер корзины в хэш-таблицах для переменных <link id="map"/>.
Значение по умолчанию зависит от размера строки кэша процессора.
Подробнее настройка хэш-таблиц обсуждается в отдельном
<link doc="../hash.xml">документе</link>.
</para>

</directive>


<directive name="map_hash_max_size">
<syntax><value>размер</value></syntax>
<default>2048</default>
<context>http</context>

<para>
Задаёт максимальный размер хэш-таблиц для переменных <link id="map"/>.
Подробнее настройка хэш-таблиц обсуждается в отдельном
<link doc="../hash.xml">документе</link>.
</para>

</directive>

</section>

</module>