Mercurial > hg > nginx-site
view xml/ru/docs/http/ngx_http_map_module.xml @ 2029:cda19823c33f
Updated with Netcraft August 2017 Web Server Survey stats.
author | Yaroslav Zhuravlev <yar@nginx.com> |
---|---|
date | Tue, 29 Aug 2017 16:01:22 +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>