nginx で同時接続リクエストの数を制限する方法

nginx で同時接続リクエストの数を制限する方法

導入

同時接続数を制限するモジュールは http_limit_conn_module です。アドレス: http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html

同時リクエスト数を制限するモジュールは http_limit_req_module です。アドレス: http://nginx.org/en/docs/http/ngx_http_limit_req_module.html

両方のモジュールはデフォルトで Nginx にコンパイルされます。

同時接続数を制限する

構成例:

http {
	limit_conn_zone $binary_remote_addr ゾーン=addr:10m;
  #limit_conn_zone $server_name ゾーン=サーバーあたり:10m;
  
  サーバー{
    limit_conn アドレス 1;
    limit_conn_log_level 警告;
    制限接続ステータス 503;
  }
}

limit_conn_zoneキーzone=name:size;同時接続の設定を定義します

  • 定義可能なモジュールは http モジュールです。
  • キー キーワードは、接続数を制限する変数に基づきます。例では、実際のビジネス ニーズに応じて、binary_remote_addr と $server_name があります。
  • ゾーンは構成名と最大共有メモリを定義します。占有メモリが最大共有メモリを超えると、サーバーはエラーを返します。

例の$binary_remote_addrはバイナリ ユーザー アドレスです。バイナリはバイトを節約し、共有メモリのサイズを縮小するために使用されます。

limit_conn ゾーン番号; 同時接続制限

  • 定義できるモジュールは、http、サーバー、およびロケーションモジュールです。
  • ゾーンはどのlimit_conn_zone設定を使用するかを指定します
  • 数値は接続数の制限です。例の構成では、制限は 1 接続です。

limit_conn_log_level info | notice | warn | error ; 制限が発生したときのログレベル

  • 定義できるモジュールは、http、サーバー、およびロケーションモジュールです。

limit_conn_status コード。制限が発生したときに返されるエラー コード。デフォルトは 503 です。

  • 定義できるモジュールは、http、サーバー、およびロケーションモジュールです。

同時リクエスト数を制限する

limit_req_zone key zone=name:size rate=rate; 同時リクエストを制限するための構成を定義します。

  • 占有メモリが最大共有メモリを超えると、サーバーはエラー応答を返します。
  • レートはリクエストレートを定義します。たとえば、10r/s は 1 秒あたり 10 リクエスト、10r/m は 1 分あたり 10 リクエストです。

limit_req ゾーン=名前 [バースト=数値] [nodelay | 遅延=数値];

  • ゾーンはどのlimit_req_zone設定を使用するかを定義します
  • burst=numberは、バケットが保存できるリクエストの数、つまりリクエストのバッファサイズを設定します。
  • ノードレイバースト バケットの要求はバッファリングされなくなり、直接送信されるため、レート要求レートは無効になります。
  • delay=number 初めてリクエストを受信する場合、number 個のリクエストを事前に配信できます。

limit_req_log_level info | notice | warn | error; 制限が発生したときのログレベル

  • 定義できるモジュールは、http、サーバー、およびロケーションモジュールです。

limit_req_statusコード; 制限が発生した場合のエラー コード

  • 定義できるモジュールは、http、サーバー、およびロケーションモジュールです。

構成例1

http {
  limit_req_zone $binary_remote_addr ゾーン=one:10m レート=1r/s;
  limit_req ゾーン=1 バースト=5;
}

リクエスト レートは 1 秒あたり 1 件のリクエストが配信されます。バースト バケット サイズには 5 つのリクエストを保存できます。制限を超えるリクエストはエラーを返します。

構成例2

http {
  limit_req_zone $binary_remote_addr ゾーン=one:10m レート=1r/s;
  limit_req ゾーン=1 バースト=5 ノードレイ;
}

サンプル構成 2 では、サンプル構成 1 にnodelayオプションが追加されます。そうすると、レート要求レートは役に立たなくなります。バースト バケット内のすべてのリクエストは直接渡されます。制限を超えるリクエストはエラーを返します。

構成例3

http {
  limit_req_zone $binary_remote_addr ゾーン=one:10m レート=1r/s;
  limit_req ゾーン=1 バースト=5 遅延=3;
}

例の構成 3 では、例の構成 1 にdelay=3オプションが追加されます。つまり、最初の 3 つのリクエストはすぐに配信され、残りはリクエスト レートで配信されます。制限を超えるリクエストはエラーを返します。

nginx で同時接続リクエスト数を制限する方法についての記事はこれで終わりです。nginx で同時接続リクエスト数を制限する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Nginx で同時 IP とダウンロード速度を制限する方法
  • Nginx+Lua+Redis は高並列 Web アプリケーションを構築します
  • Nginx の最適化された構成とカーネルの最適化により、100,000 を超える同時接続を実現
  • google-perftools を使用して高同時実行時の nginx パフォーマンスを最適化するチュートリアル (完全版)
  • 同時 IP アクセスを制限し、IP 接続を制限するように nginx と apache を設定する方法
  • Nginxは、同じ期間内の特定のIPへの訪問とリクエストの数を制限します。サンプルコード

<<:  一般的なMysql DDL操作の概要

>>:  よく使われるJavaScript配列メソッド

推薦する

Vue.js のミックスインの詳細な説明

ミックスインは、コンポーネントに分散された再利用可能な機能を柔軟な方法で提供します。 Mixin オ...

JavaScript BOMの構成と一般的なイベントの詳細な説明

目次1. 部品2. BOMの構成2. ウィンドウオブジェクトの共通イベント1. ウィンドウ読み込みイ...

jsを使用して簡単なスネークゲームを書く

この記事では、参考までに、jsで書かれたシンプルなスネークゲームの具体的なコードを紹介します。具体的...

td セルを結合した場合の td 幅の問題

以下の例では、名前が入っている td の幅が 60px のとき、2 行目の文字数が少ない場合は正常に...

React Diff Principle の詳細な分析

目次差分アルゴリズムレイヤーごとの比較同じタイプのコンポーネントを比較する同じタイプの要素の比較子ノ...

Navicat で MySQL データベースのパスワードを変更する複数の方法

方法1: SET PASSWORDコマンドを使用するまずMySQLにログインします。フォーマット: ...

MySQLデータベースとOracleデータベース間のバックアップをインポートする

OracleデータベースからエクスポートされたデータをMySqlデータベースにインポートします。 1...

背景属性の8つの属性値の詳細解説(面接の質問)

CSSの背景プロパティの値背景色背景画像背景繰り返し背景位置背景添付複合プロパティ: 背景: ba...

Docker-compose を使用して ELK クラスターを構築する方法

すべてのオーケストレーション ファイルと構成ファイルは、私の Github からアクセスできます。構...

VUE 3 テレポート コンポーネントと使用構文をすぐに使い始める

目次1. テレポートの紹介1.1. 複数のテレポートを使用する2. テレポートを使用する理由3. テ...

MySQL 5.5.56 インストール不要版の設定方法

MySQL 5.5.56無料インストール版の設定方法をテキストコードで詳しく説明します。具体的な内容...

ウェブデザインにおける階層化インターフェースの設計経験

多くのネットユーザーは、なぜ自分のウェブサイトはいつも色の問題を抱えていて、いつも地味に見え、注目を...

Web デザインの経験: 独善的な Web デザイナー

1. ゴミかクラシックか? Web テクノロジーは急速に更新されており、Web サイトのインターフェ...

Reactの新バージョンのライフサイクルフック機能と使用方法の詳細な説明

旧ライフサイクルと比較して 3つのフックが廃止され、2つの新しいフックが追加されましたReact16...

画像拡大鏡効果のJSバージョン

この記事では、画像拡大鏡効果を実現するためのJSの具体的なコードを参考までに紹介します。具体的な内容...