ngx_stream_limit_conn_module 模組

範例設定
指令
     limit_conn
     limit_conn_dry_run
     limit_conn_log_level
     limit_conn_zone
內嵌變數

ngx_stream_limit_conn_module 模組 (1.9.3) 用於限制每個已定義的鍵值的連線數量,特別是來自單一 IP 位址的連線數量。

範例設定

stream {
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    ...

    server {

        ...

        limit_conn           addr 1;
        limit_conn_log_level error;
    }
}

指令

語法 limit_conn zone number;
預設
上下文 stream, server

設定共享記憶體區域和給定鍵值的最大允許連線數量。當超過此限制時,伺服器將關閉連線。例如,以下指令

limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
    ...
    limit_conn addr 1;
}

允許每個 IP 位址一次只能有一個連線。

當指定多個 limit_conn 指令時,任何已設定的限制都將適用。

這些指令會從先前的設定層級繼承,前提是目前的層級沒有定義 limit_conn 指令。

語法 limit_conn_dry_run on | off;
預設
limit_conn_dry_run off;
上下文 stream, server

此指令出現在 1.17.6 版本中。

啟用試運行模式。在此模式下,連線數量不受限制,但是,在共享記憶體區域中,超額連線的數量會照常計算。

語法 limit_conn_log_level info | notice | warn | error;
預設
limit_conn_log_level error;
上下文 stream, server

設定當伺服器限制連線數量時所需的記錄層級。

語法 limit_conn_zone key zone=name:size;
預設
上下文 stream

設定共享記憶體區域的參數,該區域將保存各種鍵值的狀態。特別是,狀態包括目前的連線數量。key 可以包含文字、變數及其組合 (1.11.2)。具有空鍵值的連線不會被計算在內。使用範例

limit_conn_zone $binary_remote_addr zone=addr:10m;

在此,鍵是由 $binary_remote_addr 變數設定的用戶端 IP 位址。$binary_remote_addr 的大小對於 IPv4 位址為 4 個位元組,對於 IPv6 位址為 16 個位元組。儲存的狀態在 32 位元平台上始終佔用 32 或 64 個位元組,在 64 位元平台上佔用 64 個位元組。一個兆位元組的區域可以保存約 32,000 個 32 位元組的狀態或約 16,000 個 64 位元組的狀態。如果區域儲存空間耗盡,伺服器將關閉連線。

此外,作為我們商業訂閱的一部分,自 1.17.7 起,可以使用API取得重設每個此類共享記憶體區域的狀態資訊

內嵌變數

$limit_conn_status
保留限制連線數量的結果 (1.17.6):PASSEDREJECTEDREJECTED_DRY_RUN