ホームページ  >  記事  >  運用・保守  >  nginx を使用して分散電流制限を実装する方法

nginx を使用して分散電流制限を実装する方法

WBOY
WBOY転載
2023-05-13 12:07:141186ブラウズ

1. はじめに

一般に、外部に公開されているシステムは、プロモーションやハッカーの攻撃中に大量のリクエストを受け取ります。瞬時に大量の同時トラフィックが到着するため、電流を制限する必要があります。

#2. まず、インターフェイスを外部に公開するプログラムをデプロイします。

##ここでデプロイするのは Spring Boot プロジェクトで、次のように公開されます。インターフェイスは非常にシンプルです。

nginx を使用して分散電流制限を実装する方法##Hello World RESTful インターフェイスを返す取得リクエストを公開しました。

このプログラムを Linux サーバーにデプロイします。デプロイ手順は、詳細は説明しませんが、Baidu Spring Boot を使用して自分でデプロイできます。

アーキテクチャをお勧めします。みんなで学ぶ交流グループ。コミュニケーションおよび学習グループ番号: 575745314。上級アーキテクトによって記録されたいくつかのビデオを共有します: Spring、mybatis、netty ソース コード分析、高同時実行性の原則、高性能、分散、マイクロサービス アーキテクチャ、JVM パフォーマンスの最適化、分散アーキテクチャなど。建築家にとって必須の知識体系となっています。また、無料の学習リソースを受け取ることもでき、これまでのところ多くのメリットがあります

nginx を使用して分散電流制限を実装する方法

#3. nginx.conf

# という名前の nginx 構成ファイルを作成します#nginx.conf という名前の設定ファイルを作成します。完全な内容は次のとおりです。

#設定ファイル内の電流制限部分の説明:nginx を使用して分散電流制限を実装する方法

#上記と同様、nginx の現在の制限設定には 2 行のコードしかありません。


最初の行:

limit_req_zone: は現在の制限ステートメントです。

nginx を使用して分散電流制限を実装する方法$ binary_remote_addr: クライアント IP に基づいて電流を制限することを意味します。たとえば、上記の電流制限設定は、各クライアント IP のリクエスト頻度を 1 秒あたり 1 回に制限します。1 秒あたり 2 回不正に動作すると、電流が制限され、http 503 エラーが返されます。どうぞ。

zone=perip: 電流制限設定のこの行を識別するために perip という名前が使用されることを示します。電流制限設定のこの行は、後で perip という名前で参照できます (つまり、現在の制限構成を複数に対して定義できます)

10m: クライアント IP を保存するスペースが 10mb であることを示します。1mb には 10,000 を超える ips を保存できます。 10mb には 100,000 を超える ips を保存できます。参考説明: ... この記事の内容 binary_remote_addr を検索して関連する説明を見つけます。

rate=1r/s: 頻度が 1 秒あたり 1 つのリクエストであることを示します。

2 行目:

myserver クラスター上で、perip

nginx を使用して分散電流制限を実装する方法

4 という名前の現在の制限構成を使用することを示します。docker を使用して nginx をデプロイします

前の手順の構成ファイルで作成した nginx.conf を置き換え、それを /root/nginx/ 下の linux ディレクトリにコピーし (ディレクトリは任意)、docker コマンドを使用してnginx 環境のデプロイ

ここでは 8080 ポートが公開されています。nginx 構成の負荷分散ノードは、8080 ポート、つまり 192.168.10.253 を通じてアクセスできます。 8090 ip ポート。この ip ポートは、最初のステップで作成およびデプロイされた hello world プログラムに対応します。

nginx を使用して分散電流制限を実装する方法コードを使用して、3 番目の 1 つのステップで定義された helloworld インターフェイスにアクセスします。

#1 秒あたり 10 の get リクエストを実行しますが、これは nginx で設定されている 1 秒あたり 1 回のリクエストの rate=1r/s よりもすでに大きいため、次のような 503 エラーが表示されます。

nginx を使用して分散電流制限を実装する方法

コードを変更して get リクエストを 1 秒に 1 回実行すると、エラーは報告されません。試してみてください

以上がnginx を使用して分散電流制限を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。