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配列メソッド

推薦する

MySQL でコマンドを使用して階層検索を実現する方法の詳細な説明

序文この記事は主にMySQLコマンド階層検索ヘルプの使用に関する内容を紹介します。この記事のサンプル...

抽選効果を実現するJavaScript

この記事では、宝くじマシンの効果を実現するためのJavaScriptの具体的なコードを参考までに共有...

MySQL COUNT関数の使用と最適化

目次COUNT 関数は何をするのですか? MyISAMの「魔法」シンプルなCOUNT最適化近似値を使...

ユーザーがフォームを繰り返し送信するのを防ぐ方法の概要

重複したフォーム送信は、マルチユーザー Web アプリケーションで最も一般的で厄介な問題です。重複送...

MySQL の結合フィールドの Concat()

目次1. はじめに2. 本文2.1 フィールドの連結2.2 フィールドでの算術計算の実行1. はじめ...

MySQL の自動インクリメント主キーが連続していないのはなぜですか?

目次1. はじめに2. 自己増分ストレージの説明3つの自己付加価値修正メカニズム4. 自己評価を修正...

HTML チュートリアル: よく使われる HTML タグのコレクション (6)

関連記事:初心者が学ぶ HTML タグ (5)導入された HTML タグは、必ずしも XHTML 仕...

mysql ERROR 1045 (28000) 問題の解決方法

私はmysql ERROR 1045に遭遇し、この問題に長い時間を費やしました。私はそれを自分で書き...

ネイティブ js カプセル化シームレスカルーセル機能

ネイティブjsカプセル化シームレスカルーセルプラグイン、参考までに、具体的な内容は次のとおりです。例...

一般的な XHTML タグの紹介

<br />しばらくの間、多くの人が XHTML の使い方を知らないことに気付きました。...

Vue プラグイン エラー: このページで Vue.js が検出されました。問題は解決しました

Vue プラグインがエラーを報告しました: このページで Vue.js が検出されましたVueプラグ...

モバイルウェブ画面適応(rem)

序文最近、フロントエンドの学習に関する以前のメモを整理したところ、モバイル Web 画面の適応 (r...

Centos7 構成 fastdfs および nginx 分散ファイル ストレージ システムの実装プロセス分析

1. libfastcommon-1.0.43 をインストールします。インストール パッケージは h...

Windows 10 に MySQL 8.0.19 を zip 形式でインストールする詳細なチュートリアル

目次1.ダウンロード後、インストールしたいディレクトリに解凍します。 2. インストールディレクトリ...

Linuxカーネルの浮動小数点演算のサポートに関する簡単な説明

現在、ほとんどの CPU は浮動小数点ユニット (FPU) をサポートしています。FPU は、プロセ...