Path: blob/main/xml/ru/docs/stream/ngx_stream_map_module.xml
1 views
<?xml version="1.0"?>12<!--3Copyright (C) Igor Sysoev4Copyright (C) Nginx, Inc.5-->67<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">89<module name="Модуль ngx_stream_map_module"10link="/ru/docs/stream/ngx_stream_map_module.html"11lang="ru"12rev="3">1314<section id="summary">1516<para>17Модуль <literal>ngx_stream_map_module</literal> (1.11.2) создаёт переменные,18значения которых зависят от значений других переменных.19</para>2021</section>222324<section id="example" name="Пример конфигурации">2526<para>27<example>28map $remote_addr $limit {29127.0.0.1 "";30default $binary_remote_addr;31}3233limit_conn_zone $limit zone=addr:10m;34limit_conn addr 1;35</example>36</para>3738</section>394041<section id="directives" name="Директивы">4243<directive name="map">44<syntax block="yes">45<value>строка</value>46<value>$переменная</value></syntax>47<default/>48<context>stream</context>4950<para>51Создаёт новую переменную, значение которой52зависит от значений одной или более исходных переменных,53указанных в первом параметре.54</para>5556<para>57<note>58Поскольку переменные вычисляются только в момент использования,59само по себе наличие даже большого числа объявлений переменных60“<literal>map</literal>” не влечёт за собой никаких дополнительных61расходов на обработку соединений.62</note>63</para>6465<para>66Параметры внутри блока <literal>map</literal> задают соответствие67между исходными и результирующими значениями.68</para>6970<para>71Исходные значения задаются строками или регулярными выражениями.72</para>7374<para>75Строки проверяются без учёта регистра.76</para>7778<para>79Перед регулярным выражением ставится символ “<literal>~</literal>”,80если при сравнении следует учитывать регистр символов, либо символы81“<literal>~*</literal>”, если регистр символов учитывать не нужно.82Регулярное выражение может содержать именованные и позиционные выделения,83которые могут затем использоваться в других директивах совместно с84результирующей переменной.85</para>8687<para>88Если исходное значение совпадает с именем одного из специальных параметров,89описанных ниже, перед ним следует поставить символ “<literal>\</literal>”.90</para>9192<para>93В качестве результирующего значения можно указать текст,94переменную и их комбинации.95</para>9697<para>98Также поддерживаются следующие специальные параметры:99<list type="tag">100<tag-name><literal>default</literal> <value>значение</value></tag-name>101<tag-desc>102задаёт результирующее значение, если исходное значение не103совпадает ни с одним из перечисленных.104Если параметр <literal>default</literal> не указан, результирующим значением105по умолчанию будет пустая строка.106</tag-desc>107108<tag-name><literal>hostnames</literal></tag-name>109<tag-desc>110указывает, что в качестве исходных значений можно111использовать маску для первой или последней части имени хоста, например,112<example>113*.example.com 1;114example.* 1;115</example>116Вместо двух записей117<example>118example.com 1;119*.example.com 1;120</example>121можно использовать одну:122<example>123.example.com 1;124</example>125Этот параметр следует указывать перед списком значений.126</tag-desc>127128<tag-name><literal>include</literal> <value>файл</value></tag-name>129<tag-desc>130включает файл со значениями.131Включений может быть несколько.132</tag-desc>133134<tag-name id="volatile"><literal>volatile</literal></tag-name>135<tag-desc>136указывает, что переменная не кэшируется (1.11.7).137</tag-desc>138139</list>140</para>141142<para>143Поиск производится в следующем порядке приоритета144и прекращается на первом подходящем варианте:145<list type="enum">146147<listitem>148строковое значение без маски149</listitem>150151<listitem>152самое длинное строковое значение с маской в начале,153например “<literal>*.example.com</literal>”154</listitem>155156<listitem>157самое длинное строковое значение с маской в конце,158например “<literal>mail.*</literal>”159</listitem>160161<listitem>162первое подходящее регулярное выражение163(в порядке следования в конфигурационном файле)164</listitem>165166<listitem>167значение по умолчанию (<literal>default</literal>)168</listitem>169170</list>171</para>172173</directive>174175176<directive name="map_hash_bucket_size">177<syntax><value>размер</value></syntax>178<default>32|64|128</default>179<context>stream</context>180181<para>182Задаёт размер корзины в хэш-таблицах для переменных <link id="map"/>.183Значение по умолчанию зависит от размера строки кэша процессора.184Подробнее настройка хэш-таблиц обсуждается в отдельном185<link doc="../hash.xml">документе</link>.186</para>187188</directive>189190191<directive name="map_hash_max_size">192<syntax><value>размер</value></syntax>193<default>2048</default>194<context>stream</context>195196<para>197Задаёт максимальный размер хэш-таблиц для переменных <link id="map"/>.198Подробнее настройка хэш-таблиц обсуждается в отдельном199<link doc="../hash.xml">документе</link>.200</para>201202</directive>203204</section>205206</module>207208209