ネットワーク開発の急速な進歩に伴い、導入されるアプリケーションやサービスの数は増加しています。一部のシナリオでは、リクエストを特定のサーバーまたはアプリケーションにルーティングする必要があります。 Nginx は高性能 Web サーバーであり、これらの問題を解決できる一般的に使用されるリバース プロキシ方式です。 Nginx リバース プロキシによって提供される ACL モジュールに基づいて、管理者はリクエスト ルーティング、アクセス制御、その他のネットワーク セキュリティの問題を柔軟に制御および管理できます。
リバース プロキシでは、クライアントからリバース プロキシ サーバーにリクエストが送信され、プロキシ サーバーはクライアントに代わってバックエンド サーバーにリクエストを送信し、返された結果をクライアントに返します。たとえば、複数の言語とテクノロジー スタックを備えた最新の Web アプリケーションでは、Nginx リバース プロキシを使用して、同じドメイン名を介してさまざまなリクエストをさまざまなバックエンド サービスにルーティングできます。
この記事では、キーワード ベースとブラックリスト ベースの ACL を構成して、Nginx リバース プロキシのより詳細なルーティング ポリシーとセキュリティ制御を実装する方法を学びます。
キーワード ACL は、リクエスト URL 内のキーワードを照合することによってリクエスト ルーティングを実装する方法です。たとえば、現在のアプリケーションでは、リクエストされた URL に「/app1/」が含まれている場合、Nginx リバース プロキシがリクエストをバックエンド アプリケーション 1 にルーティングするようにします。 URL に「/app2/」が含まれている場合、リクエストはバックエンド アプリケーション 2 にルーティングされます。
この機能を実装するには、Nginx 構成ファイルでキーワード ACL を構成する必要があります。設定方法は次のとおりです。
http { ... # 关键词acl map $request_uri $app_name { ~* "/app1/" app1; ~* "/app2/" app2; default ""; } }
この設定では、$request_uri は、リクエストされた URL を表す Nginx 組み込み変数です。この変数の値は、事前定義されたキーワード正規表現と一致するマップ ディレクティブに渡されます。一致が成功した場合は、アプリケーションの名前が $app_name 変数に保存されます。それ以外の場合は、デフォルト値が使用されます。
次に、プロキシのターゲットとして上で定義した $app_name 変数をプロキシ ディレクティブのプロキシ URL オプションに渡すことができます:
server { ... location / { ... # 配置关键词代理 proxy_pass http://$app_name.backend.com; } }
この設定では、キーワード ACL が要求されます。 from 要求されたアプリケーションの名前が URL 内で照合され、クライアントの要求はプロキシ命令を通じて対応するバックエンド アプリケーションにルーティングされます。
ブラックリスト ACL は、特定の IP またはリクエスト URL へのアクセスをブロックするために使用される方法です。このアプローチは、状況によっては非常に役立ちます。たとえば、悪意のある攻撃が発生した場合、管理者は Nginx リバース プロキシにブラックリスト ACL を構成して、IP アドレスのグループへのアクセスを拒否できます。ブラックリスト ACL を使用して、特定の一般的な攻撃 URL を拒否することもできます。
ブラックリスト ベースの ACL を設定する方法は次のとおりです:
http { ... # 黑名单acl geo $blocked_ip { default 0; include /path/to/blacklists/ip.txt; } }
この設定では、geo ディレクティブは、ブロックされた IP アドレスのリストを保存するために使用される $blocked_ip という名前のメモリ変数を定義します。この例では、外部 IP アドレス ブラックリスト ファイルが使用されます。ファイルの形式は次のとおりです。
10.2.1.10 1; 192.168.0.0/24 1; 202.102.85.154 1;
ファイルの各行には、CIDR 形式の IP アドレスまたはネットワーク セグメントが含まれており、その後にこの IP アドレスまたは CIDR ネットワーク セグメントがブロックされていることを示す数字 1 が続きます。
次に、このブラックリスト ACL を Nginx 構成で使用できます:
server { ... location / { ... # 配置黑名单ACL if ($blocked_ip) { return 403; } proxy_pass http://backend.com; } }
この構成では、要求された IP アドレスがブラックリストにあるかどうかを判断するために if ディレクティブが使用されます。禁止された応答は直接返されます。それ以外の場合、リクエストはバックエンド プロキシ サーバーにルーティングされます。
要約すると、Nginx リバース プロキシは優れた ACL モジュールを提供し、他の機能モジュールと併用して非常に柔軟なリクエスト ルーティングとアクセス制御を実現できます。リバース プロキシを使用する場合、これらの方法を理解し、使いこなすことで、さまざまな状況に適応し、ネットワーク サービスの品質とセキュリティを向上させることができます。
以上がNginx リバース プロキシのキーワードとブラックリストに基づく ACL 設定の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。