view xml/ru/docs/stream/ngx_stream_limit_conn_module.xml @ 3043:9eadb98ec770

Free nginx: removed commercial version documentation.
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 14 Feb 2024 20:05:49 +0300
parents eeed494bba51
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_stream_limit_conn_module"
        link="/ru/docs/stream/ngx_stream_limit_conn_module.html"
        lang="ru"
        rev="8">

<section id="summary">

<para>
Модуль <literal>ngx_stream_limit_conn_module</literal> (1.9.3) позволяет
ограничить
число соединений по заданному ключу, в частности, число соединений с одного
IP-адреса.
</para>

</section>


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

<para>
<example>
stream {
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    ...

    server {

        ...

        limit_conn           addr 1;
        limit_conn_log_level error;
    }
}
</example>
</para>

</section>


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

<directive name="limit_conn">
<syntax><value>зона</value> <value>число</value></syntax>
<default/>
<context>stream</context>
<context>server</context>

<para>
Задаёт зону разделяемой памяти и максимально допустимое число соединений
для одного значения ключа.
При превышении этого числа сервер закроет соединение.
Например, директивы
<example>
limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
    ...
    limit_conn addr 1;
}
</example>
разрешают одновременно обрабатывать не более одного соединения с одного
IP-адреса.
</para>

<para>
Допустимо одновременное указание нескольких директив
<literal>limit_conn</literal>,
при этом будет срабатывать любое из ограничений.
</para>

<para>
Директивы наследуются с предыдущего уровня конфигурации при условии, что
на данном уровне не описаны свои директивы <literal>limit_conn</literal>.
</para>

</directive>


<directive name="limit_conn_dry_run">
<syntax><literal>on</literal> | <literal>off</literal></syntax>
<default>off</default>
<context>stream</context>
<context>server</context>
<appeared-in>1.17.6</appeared-in>

<para>
Включает режим пробного запуска.
В данном режиме число соединений не ограничивается, однако
в зоне разделяемой памяти текущее число избыточных соединений учитывается
как обычно.
</para>

</directive>


<directive name="limit_conn_log_level">
<syntax>
<literal>info</literal> |
<literal>notice</literal> |
<literal>warn</literal> |
<literal>error</literal></syntax>
<default>error</default>
<context>stream</context>
<context>server</context>

<para>
Задаёт желаемый уровень записи в лог случаев ограничения
числа соединений.
</para>

</directive>


<directive name="limit_conn_zone">
<syntax>
    <value>ключ</value>
    <literal>zone</literal>=<value>название</value>:<value>размер</value></syntax>
<default/>
<context>stream</context>

<para>
Задаёт параметры зоны разделяемой памяти, которая хранит состояние
для разных значений ключа.
Состояние в частности содержит текущее число соединений.
В качестве <value>ключа</value> может использоваться текст, переменные
и их комбинации (1.11.2).
Запросы с пустым значением ключа не учитываются.
Пример использования:
<example>
limit_conn_zone $binary_remote_addr zone=addr:10m;
</example>
Здесь в качестве ключа используется IP-адрес клиента,
задаваемый переменной <literal>$binary_remote_addr</literal>.
Длина значения <literal>$binary_remote_addr</literal>
равна 4 байтам для IPv4-адресов или 16 байтам для IPv6-адресов.
При этом размер состояния всегда равен 32 или 64 байтам
на 32-битных платформах и 64 байтам на 64-битных.
В зоне размером 1 мегабайт может разместиться около 32 тысяч состояний
размером 32 байта или 16 тысяч состояний размером 64 байта.
При переполнении зоны сервер закроет соединение.
</para>

</directive>

</section>


<section id="variables" name="Встроенные переменные">

<para>
<list type="tag">

<tag-name id="var_limit_conn_status"><var>$limit_conn_status</var></tag-name>
<tag-desc>
хранит результат ограничения числа соединений (1.17.6):
<literal>PASSED</literal>,
<literal>REJECTED</literal> или
<literal>REJECTED_DRY_RUN</literal>
</tag-desc>

</list>
</para>

</section>

</module>