ホームページ  >  記事  >  運用・保守  >  nginx がリクエスト数を処理する方法

nginx がリクエスト数を処理する方法

(*-*)浩
(*-*)浩オリジナル
2019-11-20 10:31:543321ブラウズ

nginx は軽量かつ強力で、数百の同時実行に耐えることができます。Ddos 攻撃は nginx 自体の動作にはほとんど影響しません。しかし、リクエストが多すぎるとバックエンド サービスに影響を及ぼし始めます。

したがって、攻撃がバックエンドサーバーに到達するのを防ぐために、nginx で対応する制限を行う必要があります。 ここでは、単位時間あたりのリクエスト数を制限できる ngx_http_limit_req_module モジュールについて説明します。

nginx がリクエスト数を処理する方法

モジュールのインストールの簡単な手順はここでは紹介しませんが、設定パラメータを紹介します。

1。nginxはリクエストの数を制限しますngx_http_limit_req_moduleモジュール#定義は制限のパラメーターです。 httpで設定します。

limit_req_zone

構文:limit_req_zone $variablezone=name:size rate=rate;

デフォルト値: none

設定セクション: http

例:

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

説明: エリア名は 1 つ、サイズは 10m で、処理される平均リクエスト頻度は 1 秒あたり 1 件を超えることはできません。

キー値はクライアント IP です。

$binary_remote_addr 変数を使用すると、各ステータス レコードのサイズを 64 バイトに削減できるため、1M のメモリに約 16,000 の 64 バイト レコードを保存できます。

制限されたドメインのストレージ スペースが使い果たされると、サーバーは後続のすべてのリクエストに対して 503 (Service Temporarily Unavailable) エラーを返します。

速度は、1 秒あたりに処理されるリクエストの数と 1 分あたりに処理されるリクエストの数に設定できます。値は整数である必要があるため、1 秒あたり 1 リクエスト未満と 1 リクエストを指定する必要がある場合は、 2秒で「30r/m」が使用可能になります。

2. 必要なログ レベルを設定します。

limit_req_log

構文:limit_req_log_level info | Notice | warn | error;

デフォルト値:limit_req_log_level error;

設定セクション: http、server、location

頻度が高すぎるためにサーバーがリクエストの処理を拒否または遅延した場合、対応するレベルのログが記録されることがあります。遅延ログのログ レベルは拒否のログ レベルより 1 レベル低くなります。たとえば、「limit_req_log_level Notice」が設定されている場合、遅延ログは情報レベルになります。

3. エラーの戻り値を設定します。

構文:limit_req_status code;

デフォルト値:limit_req_status 503;

設定セクション:http、server、location

このコマンドは次のとおりです。 1.3 バージョン .15 で導入されました。拒否されたリクエストの応答ステータス コードを設定します。

4. 対応する共有メモリ制限ドメインと、処理を許可するリクエストの最大数を設定します。

構文:limit_reqzone=name[burst=number][nolay];

デフォルト値:—

設定セクション:http、server、location

limit_req_zone $binary_remote_addr zone=ttlsa_com:10m rate=1r/s;
server {
    location /www.ttlsa.com/ {
        limit_req zone=ttlsa_com burst=5;
    }
}

平均して 1 秒あたり 1 リクエスト以下に制限し、同時に周波数制限を超えるリクエストを 5 リクエスト以下に制限します。

これ以上リクエストを遅延させたくない場合は、次のような nolay パラメータを使用できます。

limit_req zone=ttlsa_com burst=5 nodelay;

以上がnginx がリクエスト数を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。