Web アプリケーションの継続的な開発により、Nginx は最も人気のある Web サーバーの 1 つとなり、多くの企業で広く使用されています。その中でも、Nginx リバース プロキシは、Web アプリケーションで最もよく使用されるデプロイメント トポロジの 1 つです。 Nginx は強力なリバース プロキシ機能を提供しますが、セキュリティ サポートをさらに改善する必要があります。したがって、ACL ベースのアクセス制御は、Web アプリケーションを保護するための実現可能な方法になりました。
ACL (アクセス制御リスト) はアクセス制御に使用されるリストで、ユーザーまたはグループの識別子で構成されるいくつかのエントリが含まれています。 ACL の役割は、ルールに基づいてリソースへのアクセスを制御することです。 Nginx では、ACL を使用して、特定のアドレスまたは URL へのアクセスを制限したり、HTTP ヘッダーやリクエスト メソッドの使用を制御したりできます。
Nginx の ACL は 2 つの部分で構成されます:
· 変数: 設定、ユーザー、またはリクエストの属性に関する情報を抽出するために使用されます。
· ディレクティブ: ユーザーまたはリクエストの属性を照合するために使用される変数と演算子で構成される論理式。
ACL 変数は、ユーザー IP、HTTP リクエスト ヘッダー、POST リクエストの本文など、さまざまなソースから取得できます。 Nginx は、さまざまなアプリケーション シナリオをサポートするために多数の変数を提供します。一般的に使用される Nginx 変数の一部を次に示します:
$remote_addr: クライアント IP アドレス。
$http_user_agent: HTTP リクエストのクライアント エージェント。
$http_referer: HTTP リクエストの送信元アドレス。
$request_method: HTTP リクエスト メソッド (GET、POST、DELETE など)。
$request_uri: HTTP リクエストの URI。
ACL ベースのアクセス制御は、通常 2 つのステップに分かれています。まず、ユーザーをグループにグループ化し、ユーザーに関連付けられた属性を定義するルールを定義する必要があります。次に、これらのルールを Nginx リバース プロキシ構成に適用して、ユーザー アクセスを制限する必要があります。
Nginx では、「map」ディレクティブを使用して ACL ルールを定義できます。たとえば、次の設定では、「acl_group」という名前の ACL ルールを定義します。
map $remote_addr $acl_group { default "guest"; 192.168.1.10 "admin"; 192.168.1.11 "admin"; 192.168.1.12 "user"; 192.168.1.13 "user"; }
上記の設定では、他の IP アドレスからのすべてのユーザーは「ゲスト」とみなされ、4 つの特定の IP アドレスからのすべてのユーザーはとみなされます。ユーザーはそれぞれ「管理者」または「ユーザー」とみなされます。
次に、論理式と組み合わせた「if」ディレクティブを使用して、ACL ルールを Nginx 構成に適用できます。たとえば、次の構成では、ACL ルールを使用して 2 つのパス「/admin」と「/user」へのアクセスを制御します。
location /admin { if ($acl_group != "admin") { return 403; } # 正常处理请求 } location /user { if ($acl_group != "user") { return 403; } # 正常处理请求 }
上記の構成では、ユーザーの IP アドレスが「admin」で定義されていない場合、 「acl_group」または「user」グループの場合、HTTP ステータス コード 403 が返され、「/admin」および「/user」パスへのアクセスが禁止されます。
ACL ベースのアクセス制御は、Web アプリケーションのセキュリティを保護する効果的な方法です。 Nginx では、ACL を使用して、特定のアドレスまたは URL へのアクセスを制限したり、HTTP ヘッダーやリクエスト メソッドの使用を制御したりできます。 ACL ルールを定義し、「if」ディレクティブを使用することで、ACL ルールを Nginx リバース プロキシ構成に適用して、ユーザー アクセスを制限し、Web アプリケーションのセキュリティを向上させることができます。
以上がNginx リバースプロキシにおける ACL ベースのアクセス制御の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。