Nginx リクエスト制限の設定方法

Nginx リクエスト制限の設定方法

Nginx は、多くの優れた機能を備えた強力で高性能な Web およびリバース プロキシ サーバーです。
同時接続数が多い場合、Nginx は Apache サービスの優れた代替手段です。Nginx は、米国の仮想ホスティング ビジネスの経営者がよく選択するソフトウェア プラットフォームの 1 つです。 Nginx が開発モデルとして epoll と kqueue を選択したことにより、最大 50,000 の同時接続の応答をサポートできるようになりました。

1. Nginx リクエスト制限

  • limit_conn_module 接続頻度の制限
  • limit_req_module リクエスト頻度制限

2. HTTPプロトコルの接続とリクエスト

1. HTTPプロトコル接続とリクエストの概念

  • HTTP リクエストは TCP 接続に基づいています。HTTP リクエストを完了するには、TCP の 3 ウェイ ハンドシェイクが必要です。
  • HTTP リクエストは TCP 接続に基づいて確立されます。1 つの TCP リクエストから少なくとも 1 つの HTTP リクエストが生成されます。

2. HTTPプロトコル接続とリクエストの図

ここに画像の説明を挿入

3. HTTPプロトコル接続とリクエストバージョンの関係

HTTP プロトコル バージョン接続関係
1.0 のTCPは再利用できない
1.1 のシーケンシャルTCP多重化
HTTP2.0多重化 TCP多重化

3. Nginx接続制限の設定構文

1. limit_conn_zoneの設定構文

  • 構文: limit_conn_zone key zone=name:size; limit_conn_zone は、要求された接続ストレージ領域を示します。キーは、どの接続がキー付きであるかを示します。たとえば、クライアントの IP がキーとして使用される場合、制限はクライアントの IP に適用されます。 zone=name は、適用されるストレージ スペースの名前を示します。サイズは要求されたストレージスペースのサイズを示します
  • デフォルト: —— デフォルトでは設定がないことを示します
  • コンテキスト: httpはhttpブロックで設定する必要があることを意味します

2. limit_connの設定構文

  • 構文: limit_conn ゾーン番号。ゾーンは limit_conn_zone で適用されるストレージ スペースの名前を示し、番号は同時要求の制限、つまり同時に制限される接続数を示します。
  • デフォルト: —— デフォルトでは設定がないことを示します
  • コンテキスト: http、server、location は、http ブロック、server ブロック、または location ブロックで構成を行う必要があることを意味します。

4. Nginxリクエスト制限の設定構文

1. limit_req_zoneの設定構文

  • 構文: limit_req_zone key zone=name:size rate=rate; limit_req_zone は、要求された接続ストレージ領域を示します。キーは、どの接続がキー付きであるかを示します。たとえば、クライアントの IP がキーとして使用される場合、制限はクライアントの IP に適用されます。 zone=name は、適用されるストレージ スペースの名前を示します。 size は要求されたストレージスペースのサイズを示します。レートはリクエストの制限を示し、制限単位(秒単位)を参照します。
  • デフォルト: —— デフォルトでは設定がないことを示します
  • コンテキスト: httpはhttpブロックで設定する必要があることを意味します

2. limit_reqの設定構文

  • 構文: limit_req zone=name [burst = number] [nodelay]; zone=name は、limit_req_zone で要求されたストレージ スペースの名前を示します。burst = number は、設定されたレートを超えた後、残りの要求数が次の 1 秒間に実行されることを示します。
  • デフォルト: —— デフォルトでは設定がないことを示します
  • コンテキスト: http、server、location は、http ブロック、server ブロック、または location ブロックで構成を行う必要があることを意味します。

5. Nginxリクエスト制限の設定デモンストレーション

1. まず、submodule.html ページを作成し、それを /opt/app/html ディレクトリにアップロードします。これにより、sub_module モジュールのコンパイル パラメータを設定してから、/opt/app/html ディレクトリの submodule.html ページにアクセスして、置き換えられたコンテンツを表示できます。

submodule.html ページ

<html>
	<ヘッド>
		<メタ文字セット="utf-8">
		<title>サブモジュール</title>
	</head>
	<本文>
		<a>html</a></br>
		<a>xml</a></br>
		<a>json</a></br>
		<a>xml</a></br>
		<a>jsp</a></br>
		<a>html</a>
	</本文>
</html>

ブラウザアクセスは以下のとおりです

ここに画像の説明を挿入

2. nginx.conf設定ファイルを編集する

[root@localhost /]# vim /etc/nginx/nginx.conf 

ここに画像の説明を挿入

3. httpブロックに次の設定を追加します。

#$binary_remote_addr はクライアントのアドレスを表します。
#zone=req_zone は、同じクライアント アドレスによって開始された要求のストレージ スペース名を示します。#1r/s は、1 秒あたり 1 回の limit_req_zone を示します。$binary_remote_addr zone=req_zone:1m rate=1r/s; 

ここに画像の説明を挿入

4. httpブロックのlocationブロックに次の設定を追加します。

#nginx接続リクエスト制限の設定 location / {
    ルート /opt/app/html;
    limit_reqゾーン=req_zone;
} 

ここに画像の説明を挿入

5. 変更された設定ファイルが正しいかどうかを確認します。「成功」というメッセージが返された場合は、設定ファイルが正しく変更されたことを意味します。それ以外の場合は、構成ファイルの構文を確認してください。

ここに画像の説明を挿入

6. 設定ファイルを再読み込みする

[root@localhost /]# systemctl reload nginx 

ここに画像の説明を挿入

7. 同時リクエストを行うには、abストレステストツールを使用します。

腹筋ストレステストツールのインストールについては、このブログ投稿リンクを参照してください: https://wwwxz.blog.csdn.net/article/details/118584751

#-n は開始されたリクエストの数を示し、-c は同時リクエストの数を示します [root@localhost ~]# ab -n 20 -c 10 http://localhost/submodule.html 

ここに画像の説明を挿入

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

以下もご興味があるかもしれません:
  • Nginx の http リソース リクエスト制限の詳細な説明 (3 つの方法)
  • nginx のリクエスト制限(接続制限とリクエスト制限)の詳細な説明
  • Nginx のリクエスト制限とアクセス制御の実装に関する簡単な説明
  • nginx プロキシ傍受リクエストによるグローバルアクセス制限
  • Nginxは、同じ期間内の特定のIPへの訪問とリクエストの数を制限します。サンプルコード
  • Nginx サーバーで接続とリクエストの数を制限するモジュールを構成する方法に関するチュートリアル

<<:  MySQL 外部キー制約とテーブル関係の概要

>>:  CSSアニメーションによるテーブルスクロールカルーセル効果の実装

推薦する

MySQL データベースのマスター・スレーブ レプリケーションと読み取り/書き込み分離

目次1. マスタースレーブレプリケーションマスタースレーブレプリケーション3スレッドマスタースレーブ...

ウェブページの HTML コード: スクロールテキストの作成

このセクションでは、Web ページ内のテキストをスクロールしたり、スクロール プロパティを制御できる...

VUE ユニアプリの基本コンポーネントの簡単な紹介

1. スクロールビュー垂直スクロールを使用する場合は、固定の高さを指定して CSS で高さを設定する...

単一の MySQL テーブルで数千万のデータを処理するアイデアを共有する

目次プロジェクトの背景改善案データ特性を観察するマルチプロセスアイデアの要約データ処理スキルプロジェ...

js が CSS 属性 (値) のサポートを決定して通知する状況の分析

新しい CSS 機能を使用する場合、その互換性は常に考慮されます。おそらく、その互換性、どのブラウザ...

JS 手ぶれ補正機能の実装と使用シナリオ

目次1. 手ぶれ補正機能とは何ですか? 1. なぜ手ぶれ補正機能が必要なのでしょうか? 2. 手ぶれ...

ページコンテンツ全体を中央に配置して、高さがコンテンツに合わせて自動的に拡張されるようにする方法

ページコンテンツ全体を中央に配置する方法と、コンテンツに合わせて高さを自動的に拡大縮小する方法。これ...

Linux サービス管理の 2 つの方法、service と systemctl の詳細な説明

1.サービスコマンドサービスコマンドは実際には/etc/init.dディレクトリに移動し、関連プログ...

Kali Linux インストール VMware ツールのインストール プロセスと VM インストール vmtools ボタン グレー

Xiaobai は vmtools のインストールを記録します。 1. 意義と機能: VMWARE ...

Linuxのseqコマンドを使用して数字のシーケンスを生成します(推奨)

Linux の seq コマンドは、数字のリストを非常に高速に生成でき、使いやすく柔軟性に優れてい...

MySQL の隠し列の詳細表示

目次1. 主キーが存在する2. 主キーはないが、一意のインデックスが存在する3. 共同主キーまたは共...

要素の円弧モーションを実現する CSS3 サンプルコード

CSS を使用して要素の円弧の動きを制御する方法CSS3 の新しい属性 transfrom トランジ...

データベースの削除から逃走までの MySQL の徹底分析_上級編 (I) - データ整合性

1. データ整合性の概要1. データ整合性の概要データの冗長性とは、データベース内に重複したデータが...

フロントエンドAIカットのコツ(体験談)

AI 画像の切り取りは PS と連携する必要があります。まず、スライスするレイヤーを選択し、それを...