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

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

Jun 10, 2023 pm 12:12 PM
nginx リバースプロキシ 認証ACL

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

nginxでクラウドサーバードメイン名を構成する方法 nginxでクラウドサーバードメイン名を構成する方法 Apr 14, 2025 pm 12:18 PM

クラウドサーバーでnginxドメイン名を構成する方法:クラウドサーバーのパブリックIPアドレスを指すレコードを作成します。 NGINX構成ファイルに仮想ホストブロックを追加し、リスニングポート、ドメイン名、およびWebサイトルートディレクトリを指定します。 nginxを再起動して変更を適用します。ドメイン名のテスト構成にアクセスします。その他のメモ:SSL証明書をインストールしてHTTPSを有効にし、ファイアウォールがポート80トラフィックを許可し、DNS解像度が有効になることを確認します。

Dockerコンテナの名前を確認する方法 Dockerコンテナの名前を確認する方法 Apr 15, 2025 pm 12:21 PM

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

Nginxが開始されるかどうかを確認する方法 Nginxが開始されるかどうかを確認する方法 Apr 14, 2025 pm 01:03 PM

nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

Windowsでnginxを構成する方法 Windowsでnginxを構成する方法 Apr 14, 2025 pm 12:57 PM

Windowsでnginxを構成する方法は? nginxをインストールし、仮想ホスト構成を作成します。メイン構成ファイルを変更し、仮想ホスト構成を含めます。 nginxを起動またはリロードします。構成をテストし、Webサイトを表示します。 SSLを選択的に有効にし、SSL証明書を構成します。ファイアウォールを選択的に設定して、ポート80および443のトラフィックを許可します。

Nginxバージョンを確認する方法 Nginxバージョンを確認する方法 Apr 14, 2025 am 11:57 AM

nginxバージョンを照会できるメソッドは次のとおりです。nginx-vコマンドを使用します。 nginx.confファイルでバージョンディレクティブを表示します。 nginxエラーページを開き、ページタイトルを表示します。

Dockerによってコンテナを起動する方法 Dockerによってコンテナを起動する方法 Apr 15, 2025 pm 12:27 PM

Docker Containerの起動手順:コンテナ画像を引く:「Docker Pull [Mirror Name]」を実行します。コンテナの作成:「docker create [options] [mirror name] [コマンドとパラメーター]」を使用します。コンテナを起動します:「docker start [container name or id]」を実行します。コンテナのステータスを確認してください:コンテナが「Docker PS」で実行されていることを確認します。

nginxサーバーを開始する方法 nginxサーバーを開始する方法 Apr 14, 2025 pm 12:27 PM

NGINXサーバーを起動するには、異なるオペレーティングシステムに従って異なる手順が必要です。Linux/UNIXシステム:NGINXパッケージをインストールします(たとえば、APT-GetまたはYumを使用)。 SystemCtlを使用して、NGINXサービスを開始します(たとえば、Sudo SystemCtl Start NGinx)。 Windowsシステム:Windowsバイナリファイルをダウンロードしてインストールします。 nginx.exe実行可能ファイルを使用してnginxを開始します(たとえば、nginx.exe -c conf \ nginx.conf)。どのオペレーティングシステムを使用しても、サーバーIPにアクセスできます

Docker用のコンテナを作成する方法 Docker用のコンテナを作成する方法 Apr 15, 2025 pm 12:18 PM

Dockerでコンテナを作成します。1。画像を引く:Docker Pull [ミラー名]2。コンテナを作成:Docker Run [Options] [Mirror Name] [コマンド]3。コンテナを起動:Docker Start [Container Name]

See all articles