Nginx は悪意のある攻撃を防ぐためにアクセス頻度の設定を制限します
インターネットの発展に伴い、Web サイトのセキュリティが重要な問題になっています。悪意のある攻撃を防ぐためには、アクセス頻度を制限する必要があります。高性能 Web サーバーとして、Nginx は構成を通じてこの目標を達成できます。
Nginx には、アクセス頻度を制限できるlimit_req_module というモジュールが用意されています。構成する前に、モジュールが有効になっていることを確認する必要があります。 nginx.conf ファイルで、http ノードを見つけて、次のコードを追加します。
http { ... limit_req_zone $binary_remote_addr zone=myzone:10m rate=5r/s; ... }
上記のコードでは、limit_req_zone を使用して、各 IP アドレスへのアクセス数を記録するメモリ領域を定義します。 . . $binary_remote_addr は、クライアントの IP アドレスを表す Nginx 変数です。 zone=myzone はゾーンの名前であり、カスタマイズできます。 10m は、領域のサイズが 10 メガバイトであることを意味します。 rate=5r/s は、1 秒あたり最大 5 つのリクエストが許可されることを意味します。
次に、この制限を特定の場所の構成に適用できます。たとえば、インターフェイスを制限したい場合、コードは次のとおりです。
location /api/ { ... limit_req zone=myzone burst=10 nodelay; ... }
上記のコードでは、limit_req 命令を使用してリクエスト頻度制限モジュールを有効にし、以前に定義したゾーン名 myzone を指定します。 burst=10 は、制限頻度を超えた後、最大 10 個のリクエストが遅延されることを意味します。 Nodelay は、周波数制限を超えた場合に遅延はなく、503 エラーが直接返されることを意味します。
上記の設定方法に加えて、指定期間を制限することもできます。たとえば、作業時間内のみに制限したい場合、コードは次のとおりです。
location /api/ { ... limit_req zone=myzone burst=10 nodelay; limit_req_status 403; limit_req_log_level error; limit_req_time 8h; ... }
上記のコードでは、limit_req_time を使用して制限時間を指定します。ここでは 8 時間に制限します。 。 limit_req_status や limit_req_log_level などの他の命令は、頻度制限を超えた場合の戻りステータス コードとログ レベルを構成するために使用されます。
上記の構成は、単一のインターフェイスのアクセス頻度のみを制限することに注意してください。 Web サイト全体を制限したい場合は、サーバー ノードで設定できます。コードは次のとおりです。
server { ... limit_req zone=myzone burst=10 nodelay; ... }
上記の構成により、Web サイトに対する悪意のある攻撃の影響を効果的に制限できます。ただし、周波数制限の粒度は特定のビジネス ニーズによって決定する必要があり、厳しすぎないように注意してください。厳しすぎると、通常のユーザーのアクセス エクスペリエンスに影響を及ぼします。
要約すると、Nginx の limit_req_module モジュールは、アクセス頻度を制限して悪意のある攻撃を防ぐのに役立ちます。合理的な構成により、Web サイトのセキュリティが保護され、ユーザーのアクセス エクスペリエンスが向上します。この記事が皆さんのお役に立てれば幸いです!
以上がNginx は悪意のある攻撃を防ぐためにアクセス頻度の設定を制限しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。