ホームページ  >  記事  >  運用・保守  >  nginx フローを制限する方法

nginx フローを制限する方法

(*-*)浩
(*-*)浩オリジナル
2019-06-10 15:21:526422ブラウズ

電子商取引プラットフォームをマーケティングする場合、大規模なトラフィックの問題が頻繁に発生します。トラフィックの迂回処理に加えて、ユーザーのブラック/ホワイト リストと評判分析を実行し、それに基づいて対応するトラフィック傍受とトラフィック制限を実行する必要がある場合があります。ユーザーの IP レピュテーションの重み。

nginx フローを制限する方法

Nginx 独自のリクエスト制限モジュール ngx_http_limit_req_module とトラフィック制限モジュール ngx_stream_limit_conn_module は、トークン バケット アルゴリズムに基づいており、トークン レートを簡単に制御し、現在の制限をカスタマイズできます。 、基本的な電流制限制御を実現します。

nginx フローを制限する方法

#アルゴリズムのアイデアは次のとおりです:

トークンは固定レートで生成され、トークン バケットにキャッシュされます。

トークン バケットがいっぱいになると、余分なトークンは破棄されます。

#リクエストは、処理されるトークンを同じ割合で消費する必要があります。

十分なトークンがない場合は、リクエストはキャッシュで処理されます。

リーキーバケットアルゴリズム:

nginx フローを制限する方法

アルゴリズムのアイデアは次のとおりです:

水 (リクエスト)をバケツに上から注ぎ、バケツの底から流れ出す(処理済み);

流出し遅れた水はバケツ(バッファ)に貯められ、一定時間で流出します。固定レート; バケツがいっぱいになると、水はオーバーフローします(捨てられます)。

このアルゴリズムの核心は、リクエストをキャッシュし、均一な速度で処理し、冗長なリクエストを直接破棄することです。


リーキー バケット アルゴリズムと比較した場合、トークン バケット アルゴリズムの違いは、「バケット」だけでなくキューもあるという点です。このバケットはトークンを格納するために使用され、キューはリクエストを保存するために使用されます。

リーキーバケットアルゴリズムとトークンバケットアルゴリズムの機能面での最も明らかな違いは、バーストトラフィック(バースト)処理を許可するか否かであり、リーキーバケットアルゴリズムはリアルタイムの送信(処理)速度を強制的に制限することができます。バースト トラフィックは追加の処理を受けず、トークン バケット アルゴリズムにより、ある程度のバースト送信を許可しながら、データの平均送信速度を制限できます。

リクエストレートに基づくNginx速度制限モジュールはリーキーバケットアルゴリズムを使用しており、リクエストのリアルタイム処理速度が設定されたしきい値を超えないことを強制的に保証できます。

Nginx の正式バージョンには、IP 接続と同時実行を制限するための 2 つのモジュールがあります。

limit_req_zone は、単位時間あたりのリクエスト数、つまりレートを制限するために使用されます。限界に達したリーキーバケットアルゴリズム「リーキーバケット」を採用。

limit_req_conn は、同時に接続できる数を制限する、つまり同時実行数の制限に使用されます。

Nginx 関連の技術記事の詳細については、

Nginx の使用法チュートリアル 列にアクセスして学習してください。

以上がnginx フローを制限する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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