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-bitプラットフォーム上では常に32バイトを占有し、64-bitプラットフォーム上では常に64バイトを占有します。一メガバイトの領域は約32,000個の32-byteの状況、あるいは約16,000個の64-byteの状況を保持することができます。領域のストレージが使い果たされると、サーバは接続を閉じるでしょう。

さらに、商用サブスクリプションの一部として、1.17.7からAPIを使ってそのような共有メモリゾーンの状態情報取得または再設定することができます。

埋め込み変数

$limit_conn_status
接続数を制限した結果を保持します (1.17.6): PASSEDREJECTEDREJECTED_DRY_RUN

TOP
inserted by FC2 system