# HG changeset patch # User Yaroslav Zhuravlev # Date 1467730714 -10800 # Node ID 3d686cb47c2c0f53c55c2904e6b37e8d389c72d0 # Parent c511b73da3a943de6173feaf1b7b9fe733384a4d Documented the map module in stream. diff -r c511b73da3a9 -r 3d686cb47c2c xml/en/GNUmakefile --- a/xml/en/GNUmakefile Tue Jul 05 17:58:34 2016 +0300 +++ b/xml/en/GNUmakefile Tue Jul 05 17:58:34 2016 +0300 @@ -97,6 +97,7 @@ stream/ngx_stream_access_module \ stream/ngx_stream_core_module \ stream/ngx_stream_limit_conn_module \ + stream/ngx_stream_map_module \ stream/ngx_stream_proxy_module \ stream/ngx_stream_ssl_module \ stream/ngx_stream_upstream_module \ diff -r c511b73da3a9 -r 3d686cb47c2c xml/en/docs/index.xml --- a/xml/en/docs/index.xml Tue Jul 05 17:58:34 2016 +0300 +++ b/xml/en/docs/index.xml Tue Jul 05 17:58:34 2016 +0300 @@ -8,7 +8,7 @@
@@ -497,6 +497,11 @@ + +ngx_stream_map_module + + + ngx_stream_proxy_module diff -r c511b73da3a9 -r 3d686cb47c2c xml/en/docs/stream/ngx_stream_map_module.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/en/docs/stream/ngx_stream_map_module.xml Tue Jul 05 17:58:34 2016 +0300 @@ -0,0 +1,202 @@ + + + + + + + + +
+ + +The ngx_stream_map_module module (1.11.2) creates variables +whose values depend on values of other variables. + + +
+ + +
+ + + +map $remote_addr $limit { + 127.0.0.1 ""; + default $binary_remote_addr; +} + +limit_conn_zone $limit zone=addr:10m; +limit_conn addr 1; + + + +
+ + +
+ + + + string + $variable + +stream + + +Creates a new variable whose value +depends on values of one or more of the source variables +specified in the first parameter. + + + + +Since variables are evaluated only when they are used, the mere declaration +even of a large number of “map” variables +does not add any extra costs to connection processing. + + + + +Parameters inside the map block specify a mapping +between source and resulting values. + + + +Source values are specified as strings or regular expressions. + + + +Strings are matched ignoring the case. + + + +A regular expression should either start from the “~” +symbol for a case-sensitive matching, or from the “~*” +symbols for case-insensitive matching. +A regular expression can contain named and positional captures +that can later be used in other directives along with the +resulting variable. + + + +If a source value matches one of the names of special parameters +described below, it should be prefixed with the “\” symbol. + + + +The resulting value can contain text, +variable, and their combination. + + + +The directive also supports three special parameters: + +default value + +sets the resulting value if the source value matches none +of the specified variants. +When default is not specified, the default +resulting value will be an empty string. + + +hostnames + +indicates that source values can be hostnames with a prefix or suffix mask: + +*.example.com 1; +example.* 1; + +The following two records + +example.com 1; +*.example.com 1; + +can be combined: + +.example.com 1; + +This parameter should be specified before the list of values. + + +include file + +includes a file with values. +There can be several inclusions. + + + + + + +If the source value matches more than one of the specified variants, +e.g. both a mask and a regular expression match, the first matching +variant will be chosen, in the following order of priority: + + + +string value without a mask + + + +longest string value with a prefix mask, +e.g. “*.example.com” + + + +longest string value with a suffix mask, +e.g. “mail.*” + + + +first matching regular expression +(in order of appearance in a configuration file) + + + +default value + + + + + + + + + +size +32|64|128 +stream + + +Sets the bucket size for the variables hash tables. +Default value depends on the processor’s cache line size. +The details of setting up hash tables are provided in a separate +document. + + + + + + +size +2048 +stream + + +Sets the maximum size of the variables +hash tables. +The details of setting up hash tables are provided in a separate +document. + + + + +
+ +
diff -r c511b73da3a9 -r 3d686cb47c2c xml/ru/GNUmakefile --- a/xml/ru/GNUmakefile Tue Jul 05 17:58:34 2016 +0300 +++ b/xml/ru/GNUmakefile Tue Jul 05 17:58:34 2016 +0300 @@ -86,6 +86,7 @@ stream/ngx_stream_access_module \ stream/ngx_stream_core_module \ stream/ngx_stream_limit_conn_module \ + stream/ngx_stream_map_module \ stream/ngx_stream_proxy_module \ stream/ngx_stream_ssl_module \ stream/ngx_stream_upstream_module \ diff -r c511b73da3a9 -r 3d686cb47c2c xml/ru/docs/index.xml --- a/xml/ru/docs/index.xml Tue Jul 05 17:58:34 2016 +0300 +++ b/xml/ru/docs/index.xml Tue Jul 05 17:58:34 2016 +0300 @@ -8,7 +8,7 @@
@@ -501,6 +501,11 @@ + +ngx_stream_map_module + + + ngx_stream_proxy_module diff -r c511b73da3a9 -r 3d686cb47c2c xml/ru/docs/stream/ngx_stream_map_module.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/ru/docs/stream/ngx_stream_map_module.xml Tue Jul 05 17:58:34 2016 +0300 @@ -0,0 +1,203 @@ + + + + + + + + +
+ + +Модуль ngx_stream_map_module (1.11.2) создаёт переменные, +значения которых зависят от значений других переменных. + + +
+ + +
+ + + +map $remote_addr $limit { + 127.0.0.1 ""; + default $binary_remote_addr; +} + +limit_conn_zone $limit zone=addr:10m; +limit_conn addr 1; + + + +
+ + +
+ + + + строка + $переменная + +stream + + +Создаёт новую переменную, значение которой +зависит от значений одной или более исходных переменных, +указанных в первом параметре. + + + + +Поскольку переменные вычисляются только в момент использования, +само по себе наличие даже большого числа объявлений переменных +“map” не влечёт за собой никаких дополнительных +расходов на обработку соединений. + + + + +Параметры внутри блока map задают соответствие +между исходными и результирующими значениями. + + + +Исходные значения задаются строками или регулярными выражениями. + + + +Строки проверяются без учёта регистра. + + + +Перед регулярным выражением ставится символ “~”, +если при сравнении следует учитывать регистр символов, либо символы +“~*”, если регистр символов учитывать не нужно. +Регулярное выражение может содержать именованные и позиционные выделения, +которые могут затем использоваться в других директивах совместно с +результирующей переменной. + + + +Если исходное значение совпадает с именем одного из специальных параметров, +описанных ниже, перед ним следует поставить символ “\”. + + + +В качестве результирующего значения можно указать текст, +переменную и их комбинации. + + + +Директива также поддерживает три специальных параметра: + +default значение + +задаёт результирующее значение, если исходное значение не +совпадает ни с одним из перечисленных. +Если параметр default не указан, результирующим значением +по умолчанию будет пустая строка. + + +hostnames + +указывает, что в качестве исходных значений можно +использовать маску для первой или последней части имени хоста, например, + +*.example.com 1; +example.* 1; + +Вместо двух записей + +example.com 1; +*.example.com 1; + +можно использовать одну: + +.example.com 1; + +Этот параметр следует указывать перед списком значений. + + +include файл + +включает файл со значениями. +Включений может быть несколько. + + + + + + +Если исходному значению соответствует несколько из указанных вариантов, +например, одновременно подходят и маска, и регулярное выражение, +будет выбран первый подходящий вариант в следующем порядке приоритета: + + + +строковое значение без маски + + + +самое длинное строковое значение с маской в начале, +например “*.example.com” + + + +самое длинное строковое значение с маской в конце, +например “mail.*” + + + +первое подходящее регулярное выражение +(в порядке следования в конфигурационном файле) + + + +значение по умолчанию (default) + + + + + + + + + +размер +32|64|128 +stream + + +Задаёт размер корзины в хэш-таблицах для переменных . +Значение по умолчанию зависит от размера строки кэша процессора. +Подробнее настройка хэш-таблиц обсуждается в отдельном +документе. + + + + + + +размер +2048 +stream + + +Задаёт максимальный размер хэш-таблиц для переменных . +Подробнее настройка хэш-таблиц обсуждается в отдельном +документе. + + + + +
+ +