ホームページ >運用・保守 >Nginx >Nginx リバースプロキシのユーザー認証に基づく ACL 設定

Nginx リバースプロキシのユーザー認証に基づく ACL 設定

PHPz
PHPzオリジナル
2023-06-10 12:12:15833ブラウズ

Nginx は、リバース プロキシ、負荷分散、その他のシナリオで広く使用されており、これらのアプリケーション シナリオでは、アクセス制御が必要になることがよくあります。 Nginx は、アクセス制御リスト (ACL) に基づいた構成方法を提供します。これにより、さまざまなユーザー、さまざまな IP アドレス、さまざまなリクエスト パスなどに対するアクセス制御を実装できます。この記事では、ID 認証と権限制御を実現するためのユーザー認証に基づく ACL 設定方法に焦点を当てます。

  1. ユーザー認証モジュール

Nginx は、ngx_http_auth_basic_module と ngx_http_auth_request_module という 2 つのユーザー認証モジュールを提供します。前者は HTTP 基本認証に基づいており、ユーザーはリクエスト ヘッダーにユーザー名とパスワードを指定する必要があります。一方、後者はバックエンド サーバーを通じてリクエストを認証します。どちらの認証モジュールにもそれぞれ長所と短所があるため、実際のニーズに応じて適切な認証モジュールを選択してください。

  1. 認証プロセス

ngx_http_auth_request_module モジュールに基づくユーザー認証プロセスは次のとおりです:

1) クライアントはリクエストを Nginx に送信します。 ##2) Nginx リクエストをインターセプトし、認証リクエストをバックエンド サーバーに送信します;
3) バックエンド サーバーはユーザーを認証し、認証結果を返します;
4) Nginx は認証結果に基づいてクライアントに応答します。

    構成例
アプリケーションが次のインターフェイスを提供すると仮定します:

1)/admin: 管理者のみがアクセスできます;

2) /user: すべてのユーザーがアクセスできます;
3)/login: ユーザー認証に使用されるインターフェイス。

次に、Nginx を使用してリバース プロキシを使用し、インターフェイスにアクセス制御を実装したいと考えています。同時に、認証されたユーザーのみがインターフェイスにアクセスできるようにしたいと考えています。以下の設定でログイン状況を確認できます。

location /admin {
    auth_request /auth;
    error_page   401 = /login;
    proxy_pass   http://upstream;
}

location /user {
    auth_request /auth;
    proxy_pass   http://upstream;
}

location = /auth {
    internal;
    proxy_pass   http://upstream/auth;
    proxy_pass_request_body off;
    proxy_set_header Content-Length "";
    proxy_set_header X-Original-URI $request_uri;
}

この構成では、3 つの場所を定義します。このうち、/admin、/user はそれぞれアクセス制御が必要なインターフェースを表し、/auth はユーザー認証に使用されるインターフェースです。クライアントが /admin をリクエストすると、Nginx は auth_request ディレクティブを通じて認証リクエストを /auth に転送し、401 エラー コードが返された場合は /login にジャンプします。 /user の処理も同様ですが、エラー コード処理が追加されていません。 /auth の処理はユーザー認証を実際に実装する部分であり、認証のためにバックエンド サーバーにプロキシし、認証結果を返します。

この例では、/auth はユーザー認証用のバックエンド インターフェイスであり、対応するバックエンド コードを記述することで、さまざまな認証方法 (LDAP、データベースなど) をサポートできます。

一般的に、Nginx の ACL 機能は強力な正規表現エンジンといくつかの合意された変数に基づいており、ユーザー認証スキームの開発者にとって非常に効果的な権限制御の実装方法です。もちろん、実装中は、特定のニーズに従って対象を絞った構成を実行し、アプリケーション シナリオの特性に基づいて最適化する必要があります。

以上がNginx リバースプロキシのユーザー認証に基づく ACL 設定の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。