インターネットの発展に伴い、クラウド上に展開されるアプリケーションが増加しており、クラウドサービスのセキュリティと安定性をいかに確保するかが重要な課題となっています。中でも Nginx は、高性能 Web サーバーおよびリバース プロキシとして、クラウド サービスの導入と管理に広く使用されています。実際のアプリケーションでは、頻繁にアクセスされる IP、悪意のあるアクセス要求、大量のトラフィックのアクセスなど、いくつかのシナリオでアクセスを制限する必要があります。この記事では、クラウドサービスの安全性と安定性を確保するために、一定時間内のアクセス数を制限する時間帯に基づくアクセス制御方法を紹介します。
1. タイム ウィンドウとは
タイム ウィンドウとは、イベントを一定期間内に制限する方法を指します。アクセス制御では、時間枠に基づいてアクセスを制限できます。たとえば、1 分間に最大 10 回の訪問、5 分間に最大 100 回の訪問、1 時間に最大 1,000 回の訪問などです。時間枠は実際の状況に応じて調整でき、柔軟でカスタマイズ可能です。
2. Nginx リバース プロキシでのタイム ウィンドウ アクセス制御
- ngx_http_limit_req_module モジュールのインストール
nginx タイム ウィンドウ アクセス制御を使用する前に、以下をインストールする必要があります。それは ngx_http_limit_req_module モジュールです。このモジュールは、同じ期間内でのクライアント要求の到着頻度を制御できます。通常、nginx をインストールすると、このモジュールも同時にインストールされます。インストールされていない場合は、nginx を再コンパイルしてインストールする必要があります。インストール方法は次のとおりです:
$ wget http://nginx.org/download/nginx-1.14.0.tar.gz $ tar zxvf nginx-1.14.0.tar.gz $ cd nginx-1.14.0/ $ ./configure --prefix=/usr/local/nginx --add-module=../nginx-limit-req-module-master $ make $ sudo make install
- Nginx reverse の設定proxy
次の内容を Nginx リバース プロキシ構成ファイルに追加します。
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; server{ ... location /{ limit_req zone=one burst=5; proxy_pass http://backend; } }
この構成では、limit_req_zone は制限領域 1 を定義します。ここで、10m はメモリ サイズです。実際のニーズに応じて調整してください。 rate=1r/s は 1 秒あたり 1 つのリクエストを定義します。 Limit_req ゾーン=1 バースト=5 がロケーションに追加されます。これは、リクエストの数が 1 秒を超えると、超過したリクエストは以降のピーク値 5 リクエストで処理されることを意味します。
- 検証時間枠のアクセス制御
構成が完了したら、次のように ab ツールを使用してテストできます。
$ ab -n 100 -c 10 http://localhost/ This is ApacheBench, Version 2.3 <$Revision: 1807734 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Finished 100 requests
このコマンド意味: 100 個のリクエストを送信し、同時リクエストの数は 10 です。テスト結果: 1 秒以内に 10 件のリクエストが送信されると、次のように残りのリクエストが制限され、429 エラーが生成されます:
$ ab -n 100 -c 10 http://localhost/ This is ApacheBench, Version 2.3 <$Revision: 1807734 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Finished 100 requests Server Software: nginx/1.14.0 Server Hostname: localhost Server Port: 80 Document Path: / Document Length: 0 bytes Concurrency Level: 10 Time taken for tests: 0.062 seconds Complete requests: 100 Failed requests: 9 (Connect: 0, Receive: 0, Length: 0, Exceptions: 9) Non-2xx responses: 9 Requests per second: 1617.28 [#/sec] (mean) Time per request: 6.173 [ms] (mean) Time per request: 0.617 [ms] (mean, across all concurrent requests) Transfer rate: 0.00 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 0.2 1 1 Processing: 1 5 9.8 3 47 Waiting: 1 5 9.8 3 47 Total: 1 6 9.8 4 47 Percentage of the requests served within a certain time (ms) 50% 4 66% 5 75% 5 80% 6 90% 15 95% 47 98% 47 99% 47 100% 47 (longest request)
3. 概要
クラウド サービスの展開と管理、アクセス制御は非常に重要です。 Nginx リバース プロキシのタイム ウィンドウ ベースのアクセス制御を通じて、アクセス頻度を効果的に制御し、クラウド サービスのセキュリティと安定性を確保できます。この方法は、高頻度のリクエストを制限するだけでなく、悪意のあるアクセス リクエストも制限し、クラウド サービスの信頼性とセキュリティを効果的に向上させることができます。
以上がNginx リバースプロキシにおけるタイムウィンドウベースのアクセス制御の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Nginxは、高い並行性と静的コンテンツの処理に適していますが、Apacheは動的な内容と複雑なURL書き換えに適しています。 1.Nginxは、高い並行性に適したイベント駆動型モデルを採用しています。 2。Apacheは、動的なコンテンツに適したプロセスモデルまたはスレッドモデルを使用します。 3。NGINX構成は簡単ですが、Apache構成は複雑ですが、より柔軟です。

NginxとApacheにはそれぞれ独自の利点があり、選択は特定のニーズに依存します。 1.NGINXは、単純な展開を備えた高い並行性に適しており、構成の例には仮想ホストとリバースプロキシが含まれます。 2。Apacheは複雑な構成に適しており、展開も同様に簡単です。構成の例には、仮想ホストとURL書き換えが含まれます。

Nginxunitの目的は、Webアプリケーションの展開と管理を簡素化することです。その利点には、次のものが含まれます。1)Python、PHP、Go、Java、node.jsなどの複数のプログラミング言語をサポートします。 2)動的構成と自動リロード関数を提供します。 3)統一されたAPIを介してアプリケーションライフサイクルを管理します。 4)非同期I/Oモデルを採用して、高い並行性と負荷分散をサポートします。

Nginxは2002年に開始され、C10Kの問題を解決するためにIgorsysoevによって開発されました。 1.Nginxは、高性能の非同期アーキテクチャであり、高い並行性に適した高性能Webサーバーです。 2。システムのパフォーマンスと信頼性を向上させるために、リバースプロキシ、ロードバランス、キャッシュなどの高度な機能を提供します。 3。最適化手法には、HTTP/2とセキュリティ構成を使用した、ワーカープロセスの数の調整、GZIP圧縮の有効化が含まれます。

NginxとApacheの主なアーキテクチャの違いは、Nginxがイベント駆動型の非同期非ブロッキングモデルを採用し、Apacheはプロセスまたはスレッドモデルを使用することです。 1)nginxは、静的な内容と逆プロキシに適したイベントループとI/O多重化メカニズムを介して、高電流接続を効率的に処理します。 2)Apacheは、非常に安定しているがリソース消費量が高いマルチプロセスまたはマルチスレッドモデルを採用しており、リッチモジュールの拡張が必要なシナリオに適しています。

Nginxは、高い同時コンテンツと静的コンテンツの処理に適していますが、Apacheは複雑な構成と動的コンテンツに適しています。 1。NGINXは、交通量の多いシナリオに適した同時接続を効率的に処理しますが、動的コンテンツを処理するときは追加の構成が必要です。 2。Apacheは、複雑なニーズに適したリッチモジュールと柔軟な構成を提供しますが、並行性のパフォーマンスが低いです。

NginxとApacheにはそれぞれ独自の利点と欠点があり、選択は特定のニーズに基づいている必要があります。 1.Nginxは、非同期の非ブロッキングアーキテクチャのため、高い並行性シナリオに適しています。 2。Apacheは、モジュラー設計のため、複雑な構成を必要とする低変動シナリオに適しています。

Nginxunitは、複数のプログラミング言語をサポートし、動的構成、ゼロダウンタイム更新、組み込みのロードバランシングなどの機能を提供するオープンソースアプリケーションサーバーです。 1。動的構成:再起動せずに構成を変更できます。 2。多言語サポート:Python、Go、Java、PHPなどと互換性があります。 4。ビルトインロードバランシング:リクエストは、複数のアプリケーションインスタンスに配布できます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版
中国語版、とても使いやすい

Dreamweaver Mac版
ビジュアル Web 開発ツール

ホットトピック









