ngx_http_limit_conn_module は、異常なトラフィック、過剰な負荷、または大規模なトラフィックの悪意のある攻撃アクセスがある一部のサーバーの同時接続数を制限します。このモジュールは、定義されたキーに基づいて、キー値ごとに接続数を制限できます。 used ヘッダー情報が完全に読み取られたリクエストを処理する接続がカウントされます。
このモジュールには、limit_conn_zone と limit_conn という 2 つの設定パラメータが用意されています。Limit_conn_zone は http{} セクションでのみ設定できますが、limit_conn は http{}、server{}、location{} セクションで設定できます。
1.limit_conn_zone
構文:limit_conn_zone $variable z
設定セクション: http
このディレクティブは、セッション状態の保存領域について説明します。現在の接続数はキーの状態に保存され、キーの値は特定の変数の null 以外の値にすることができます (null 値は考慮されません)。 $variable はキーを定義し、z はエリア名を定義し、その主な機能はその後に続くlimit_connです。 size は、各キーの共有メモリ空間のサイズを次のように定義します。
注:
クライアントの IP アドレスがキーとして使用されます。ここでは、remote_addr 変数ではなく、binary_remote_addr 変数が使用されていることに注意してください。
Remote_addr 変数の長さの範囲は 7 バイトから 15 バイトですが、ストレージ状態は 32 ビット プラットフォームでは 32 バイトまたは 64 バイト、64 ビット プラットフォームでは 64 バイトを占めます。
binary_remote_addr 変数の長さは 4 バイトに固定されており、ストレージ状態は 32 バイトまたは 32 ビット プラットフォームでは 64 バイト、64 ビット プラットフォームでは 64 バイトを占有します。
1M の共有スペースでは、32,000 の 32 ビット状態と 16,000 の 64 ビット状態を保存できます。
共有メモリ領域が使い果たされると、サーバーは後続のすべてのリクエストに対して 503 (Service Temporarily Unavailable) エラーを返します。
2.limit_conn
構文:limit_conn ゾーン名番号
設定セクション: http、server、location
このディレクティブは、指定されたキー値ごとに同時接続の最大数を指定します。この数を超えると、503 (サービス) エラーが返されます。例 (同じ IP は同時に 20 個の接続しか許可されません):
3. 設定と使用例
limit_conn_zone $binary_remote_addr z
主に変数、ゾーン名、共有メモリのサイズを定義するために使用されます
limit_conn showjoy_conn 20;
先ほど定義したshowjoy_connを設定し、同一IPの同時接続数を20に制限します