1. 背景
Web サイトの日常的なメンテナンスでは、このような要件に遭遇することがよくありますが、特定のクローラーや悪意のあるユーザーがサーバーを要求するのをブロックするには、次のことを行う必要があります。動的 IP ブラックリストを確立します。ブラックリストにある IP の場合、サービスは拒否されます。
2. アーキテクチャ
IP ブラックリスト機能を実装するにはさまざまな方法があります:
1. オペレーティング システムでレベル、指定された IP へのネットワーク要求を拒否するように iptables を構成します;
2. Web サーバー レベルで、nginx 独自の拒否オプションまたは lua プラグインを介して IP ブラックリストを構成します;
3.アプリケーション レベルで、サービスを要求する前に、クライアント IP がブラックリストに含まれているかどうかを確認します。
管理と共有を容易にするために、nginx lua redis アーキテクチャを通じて IP ブラックリスト機能を実装します。アーキテクチャ図は次のとおりです:
##アーキテクチャ図
3. 実装
1. nginx lua モジュールをインストールします。さまざまな lua モジュールを統合する nginx サーバーである openresty を使用することをお勧めします。openresty
nginx 構成
nginx プロセスは、IP ブラックリストをキャッシュするために 1m の共有メモリ空間を割り当てます。リストについては、次を参照してください。 https://github.com/openresty/lua-nginx-module#lua_shared_dictaccess_by_lua_file lua/ip_blacklist.lua;#場所を指定してくださいlua スクリプトの
https://gist.github.com/ceelog を参照してください。 / 39862d297d9c85e743b3b5111b7d44cb#4. lua スクリプトを設定し、redis から最新の IP ブラックリストを定期的に取得します。ファイルの内容については、
##lua script content
5. Redis サーバー上に新しいセット タイプ データ ip_blacklist を作成し、最新の IP ブラックリストを追加します。上記の手順を完了した後、nginx をリロードすると、設定が有効になり始めます
この時点で、サーバーにアクセスします。IP アドレスがブラックリストにある場合は、アクセスが拒否されます: ## # #########アクセスが拒否されました######
以上がNginx が Lua+Redis を使用して IP を動的に禁止する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。