ネットワークセグメント内の IP アドレスに対する Nginx の接続制限設定の詳細な説明

ネットワークセグメント内の IP アドレスに対する Nginx の接続制限設定の詳細な説明

Nginx におけるいわゆる接続制限は、実際には TCP 接続、つまり 3 ウェイ ハンドシェイク後にリクエスタによって正常に確立された接続ステータスです。 Nginx は通常、接続制限機能を提供するために ngx_http_limit_conn_module モジュールを提供します。このモジュールは、単一の IP ソースからの接続数など、定義されたキーに基づいて各キー値の接続数を制限できます。

ngx_http_limit_conn_module ディレクティブの説明

構文: limit_conn ゾーン番号;
デフォルト: -
コンテキスト: http、サーバー、場所

このディレクティブは、セッション状態の保存領域について説明します。キーの状態には現在の接続数が保持され、キーの値は特定の変数に対して null 以外の任意の値にすることができます (null 値は考慮されません)。 $variable はキーを定義し、zone=name はゾーン名を定義します。 一般的な使用例:

limit_conn_zone $binary_remote_addr ゾーン=addr:10m;

サーバー{
  場所 /download/ {
    limit_conn アドレス 1;
  }

上記の例は、/download/ へのアクセス要求が行われた場合、同時に 1 つの要求接続のみがリソースを正常にダウンロードできることを示しています。

ネットワークセグメント制限

一般的な limit_conn_zone 構成では、通常、単一の IP またはホスト レベルでの接続数を制限すべく $binary_remote_addr または $server_name を設定します。

しかし、特定の IP セグメントへの接続数を制限したい場合には、次のようにします。

http {

……

  limit_conn_zone $ip_segment ゾーン=ネットワークセグメント:10m;

  サーバー{
      ……
      $ip_segment $remote_addr を設定します。

      $ip_segment ~ ^(\d+)\.(\d+)\.(\d+)\.(\d+) の場合 {
        $ip_segmentを$1.$2.$3に設定します。
      }

      場所 /download/ {
        limit_connネットワークセグメント10; 
        #制限レート 200k;
      }

  }
}

これは基本的に、ネットワーク セグメント内のすべての IP の接続数に統一された接続制限を課すという Nginx の要件を満たします。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Nginxの現在の制限設定の詳細な説明
  • Nginx 急ぎ購入 電流制限構成 実装分析
  • Nginx の現在の制限と構成管理の実践記録

<<:  Vueは秒殺しのカウントダウンコンポーネントを実装する

>>:  MySQLデータファイルの保存場所を表示する方法

推薦する

Docker での Redis 接続の急増をトラブルシューティングした実践的な記録

土曜日、本番サーバー上の Redis サーバーが利用できなくなり、エラー メッセージは次のようになり...

vue3.0 でカルーセル コンポーネントをカプセル化する手順

目次1: カプセル化の考え方2. 包装工程3: ドットインジケーター4: 左と右のインジケーター5:...

MySQLのMVCCマルチバージョン同時実行制御の実装

1 MVCCとは何かMVCC の正式名称は、マルチバージョン同時実行制御です。データベースへの同時ア...

Mysqlの日付と時刻関数を扱う記事

目次序文1. 現在の時刻を取得する1.1 現在の日付と時刻を返す1.2 現在の日付を取得する1.3 ...

Alibaba Cloud CentOS 7 に MySQL 8.0.13 をインストールする方法

1. MySQL インストール パッケージをダウンロードします(ここにはコツがあります。おそらく、こ...

MySQL公式パフォーマンステストツールmysqlslapの使い方の紹介

目次導入説明書実際の経験まとめ導入MySQL は最も人気のあるオープンソース データベースとして、さ...

MySQLでの少し複雑な使用例コード

序文MySQL の構文は誰にとっても難しいものではないと思いますが、この記事では主に MySQL の...

画像の一時停止を実現するjQueryプラグイン

この記事では、画像の一時停止を実現するためのjQueryプラグインの具体的なコードを参考までに共有し...

dns-prefetch とは何ですか? フロントエンドの最適化: DNS の事前解決によりページ速度が向上します

目次背景1. dns-prefetch とは何ですか? 2. dns-prefetch を設定するに...

CSS属性のデフォルト値width: autoとwidth: 100%の違いの詳細な説明

幅: 自動子要素(コンテンツ+パディング+境界線+余白を含む)は、親要素のコンテンツ領域全体を埋めま...

flex-grow、flex-shrink、flex-basis、9グリッドレイアウトを理解する

1. flex-grow、flex-shrink、flex-basis プロパティflex-grow...

MySQL InnoDB ロック メカニズムの詳細な例

1. InnoDBのロック機構InnoDB ストレージ エンジンは、行レベルのロックとトランザクショ...

Vueのインストール方法の紹介

目次1. グローバルに登録されたコンポーネント2. グローバルカスタム指示vue 、新しいプラグイン...

MySQL データベースの高度なクエリとマルチテーブルクエリ

MySQL マルチテーブルクエリワークシートを追加する -- ユーザーテーブル (ユーザー) テーブ...