1. はじめに
一般に、外部に公開されているシステムは、プロモーションやハッカーの攻撃中に大量のリクエストを受け取ります。瞬時に大量の同時トラフィックが到着するため、電流を制限する必要があります。
#2. まず、インターフェイスを外部に公開するプログラムをデプロイします。
##Hello World RESTful インターフェイスを返す取得リクエストを公開しました。
このプログラムを Linux サーバーにデプロイします。デプロイ手順は、詳細は説明しませんが、Baidu Spring Boot を使用して自分でデプロイできます。
アーキテクチャをお勧めします。みんなで学ぶ交流グループ。コミュニケーションおよび学習グループ番号: 575745314。上級アーキテクトによって記録されたいくつかのビデオを共有します: Spring、mybatis、netty ソース コード分析、高同時実行性の原則、高性能、分散、マイクロサービス アーキテクチャ、JVM パフォーマンスの最適化、分散アーキテクチャなど。建築家にとって必須の知識体系となっています。また、無料の学習リソースを受け取ることもでき、これまでのところ多くのメリットがあります
#3. nginx.conf# という名前の nginx 構成ファイルを作成します#nginx.conf という名前の設定ファイルを作成します。完全な内容は次のとおりです。
#設定ファイル内の電流制限部分の説明:
#上記と同様、nginx の現在の制限設定には 2 行のコードしかありません。
最初の行:
$ 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 クラスター上で、perip4 という名前の現在の制限構成を使用することを示します。docker を使用して nginx をデプロイします
前の手順の構成ファイルで作成した nginx.conf を置き換え、それを /root/nginx/ 下の linux ディレクトリにコピーし (ディレクトリは任意)、docker コマンドを使用してnginx 環境のデプロイ
ここでは 8080 ポートが公開されています。nginx 構成の負荷分散ノードは、8080 ポート、つまり 192.168.10.253 を通じてアクセスできます。 8090 ip ポート。この ip ポートは、最初のステップで作成およびデプロイされた hello world プログラムに対応します。コードを使用して、3 番目の 1 つのステップで定義された helloworld インターフェイスにアクセスします。
#1 秒あたり 10 の get リクエストを実行しますが、これは nginx で設定されている 1 秒あたり 1 回のリクエストの rate=1r/s よりもすでに大きいため、次のような 503 エラーが表示されます。
コードを変更して get リクエストを 1 秒に 1 回実行すると、エラーは報告されません。試してみてください
以上がnginx を使用して分散電流制限を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。