ホームページ  >  記事  >  運用・保守  >  Nginxユーザー認証ページの設定方法

Nginxユーザー認証ページの設定方法

PHPz
PHPz転載
2023-05-12 08:10:112406ブラウズ

序文

アプリケーション シナリオ: おそらく内部 Web サイトには外部ユーザーがアクセスする必要があり、同時に訪問者には Web サイト アカウントの権限を与えることができないため、次のような制限が課されます。 nginxのレベル。たとえば、アウトソーシングプロジェクトでは、社内の従業員はドキュメントを操作するためのアカウントを持っていますが、外注先の従業員は社内のアカウントを持っていませんが、ドキュメントを参照できる必要があるため、nginx レベルでユーザー認証を設定することが最も簡単で最良のオプションです。ほとんどの場合、雇用主は外注先の従業員に対して基本的なアクセス権を持つアカウントを開設しません。

nginx レベルでのユーザー認証の前提条件: apache2-utils (debian、ubuntu) や httpd-tools (rhel/centos/oracle linux) など、対応するパスワード作成プログラムが必要です。オペレーティング システムは異なります。異なるソフトウェア。

アカウント パスワード ファイルの作成

  • コマンド sudo htpasswd -c /etc/apache2/.htpasswd user1 ## を使用します。 #最初のアカウントを作成し、Enter キーを押してパスワードを入力します。同じコマンドには、2 番目のユーザーとパスワードを作成するための -c パラメータはありません。-c パラメータはファイルを作成するためのものです。繰り返す必要はありません。 2回目以降のコマンドでファイルを作成します。

  • ファイルとアカウント情報が正常に生成されたことを確認します。コマンド cat /etc/apache2/.htpasswd を使用してファイルの内容を表示します。これはアカウント番号と暗号化されたパスワードであるはずです。例:

    user1 :$apr1$/woc1jnp$kah0ssvn5qesmjttn0e9q0 など。

http 基本ユーザー認証用に nginx を構成する

auth_basic ディレクティブを使用して、保護領域の名前を指定します。この名前は、アカウントとパスワードのポップアップ ウィンドウで、auth_basic_user_file コマンドを使用して、アカウントとパスワードの情報を含む .htpasswd パスを設定します。たとえば、構成:

location /api {
 auth_basic   "administrator's area";
 auth_basic_user_file /etc/apache2/.htpasswd; 
}

さらに、ブロックが認証システム全体を継承したくない場合は、ブロック内で auth_basic をオフに設定できます。つまり、ユーザー認証がオフになります。設定例:

server {
 ...
 auth_basic   "administrator's area";
 auth_basic_user_file conf/htpasswd;

 location /public/ {
  auth_basic off;
 }
}

認証と IP アドレスによるアクセス制限の組み合わせ

http 基本認証は、IP アドレスによるアクセス制限と効果的に組み合わせることができます。少なくとも 2 つのシナリオを実装できます。

  • ユーザーは認証され、IP アクセスが必要です。

  • ユーザーは認証されるか、IP アクセスが必要です。許可

1. 指定した IP へのアクセスを許可または制限するには、allow ディレクティブと拒否ディレクティブを使用します。たとえば、次のように設定します。 192.168.1.2 アドレス その他のネットワークの場合は、192.168.1.1/24 へのアクセスのみが許可されます。注: 許可ディレクティブと拒否ディレクティブは、定義された順序で適用されます。


IP および http 認証を介して制限を満足ディレクティブと組み合わせます。ディレクティブが all に設定されている場合、クライアントがこれら 2 つの条件を満たしたときにアクセスが許可されます。ディレクティブが any に設定されている場合、クライアントが少なくとも 1 つの条件 (例: 構成) を満たしていればアクセスが許可されます。

location /api {
 #... deny 192.168.1.2;
 allow 192.168.1.1/24;
 allow 127.0.0.1;
 deny all;
}

上記は完全な例にまとめることができます:

location /api {
 #... satisfy all; 

 deny 192.168.1.2;
 allow 192.168.1.1/24;
 allow 127.0.0.1;
 deny all;

 auth_basic   "administrator's area";
 auth_basic_user_file conf/htpasswd;
}

最終的な効果は次のとおりです:

以上がNginxユーザー認証ページの設定方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。