モジュール 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)は定義されたキーあたりの接続数を制限するために使用されます。特に、1つの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アドレスあたり1つの接続だけを許可します。

複数の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バイトになります。1メガバイトのゾーンには、約32,000の32バイト状態、または約16,000の64バイト状態を保持できます。ゾーンストレージを使い果たすと、サーバーは接続を閉じます。

さらに、商用サブスクリプションの一部として、そのような共有メモリゾーンごとのステータス情報取得またリセットを、1.17.7以降のAPIで行うことができます。

埋め込み変数

$limit_conn_status
接続数の制限の結果を保持します(1.17.6):PASSEDREJECTED、またはREJECTED_DRY_RUN