Nginx レベルで基本的なユーザー認証を構成する手順を完了します。

Nginx レベルで基本的なユーザー認証を構成する手順を完了します。

序文

アプリケーション シナリオ: おそらく、内部 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 パスを設定します。たとえば、次のように設定します。

場所 /api {
 auth_basic "管理者エリア";
 auth_basic_user_file /etc/apache2/.htpasswd; 
}

さらに、ブロックが認証システム全体を継承したくない場合は、ブロック内で auth_basic をオフに設定して、ユーザー認証をオフにすることができます。たとえば、次のように設定します。

サーバー{
 ...
 auth_basic "管理者エリア";
 auth_basic_user_file conf/htpasswd;

 場所 /public/ {
  auth_basic オフ;
 }
}

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

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

  • ユーザーは認証され、IPアクセス権を持っている必要があります
  • ユーザーは認証を受けるか、IPアクセス権を持っている必要があります

1. 許可および拒否の指示を使用して、指定した IP アドレスへのアクセスを許可または制限します。例:

場所 /api {
 #... 192.168.1.2 を拒否します。
 192.168.1.1/24 を許可します。
 127.0.0.1 を許可します。
 すべてを否定する;
}

2. 192.168.1.2 以外のネットワークでは、192.168.1.1/24 のみにアクセス権が付与されます。注意: 許可および拒否ディレクティブは定義された順序で適用されます。

ip および http 認証を介して、制限を satisfied ディレクティブと組み合わせます。ディレクティブが all に設定されている場合、クライアントが両方の条件を満たしている場合にアクセスが許可されます。ディレクティブが any に設定されている場合、クライアントが少なくとも 1 つの条件を満たしている場合にアクセスが許可されます。たとえば、次のように構成します。

場所 /api {
 #... すべてを満たす; 

 192.168.1.2 を拒否します。
 192.168.1.1/24 を許可します。
 127.0.0.1 を許可します。
 すべてを否定する;

 auth_basic "管理者エリア";
 auth_basic_user_file conf/htpasswd;
}

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

http {
 サーバー{
  192.168.1.23:8080 をリッスンします。
  ルート /usr/share/nginx/html;

  場所 /api {
   API;
   すべてを満足させる;

   192.168.1.2 を拒否します。
   192.168.1.1/24 を許可します。
   127.0.0.1 を許可します。
   すべてを否定する;

   auth_basic "管理者エリア";
   auth_basic_user_file /etc/apache2/.htpasswd; 
  }
 }
}

最終的な効果は以下のようになります。

© オリジナル記事、公式文書より引用

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • Nginx の realip モジュールの使い方の基礎学習
  • Nginxの基本についての簡単な紹介
  • Nginx の基本 - Gzip 設定ガイド
  • Nginx サーバーの基本的なセキュリティ構成といくつかのセキュリティのヒント
  • nginxの基本設定の説明
  • nginxの基礎を学ぶ

<<:  Windows 10 での MySQL 8.0.11 圧縮バージョンのインストール チュートリアル

>>:  Node.js を使用して C# のデータ テーブル エンティティ クラス生成ツールを作成する方法

推薦する

フロントエンドの上級者向けコースでは、JavaScript のストレージ機能の使い方を学習します。

目次序文背景実施計画の考え方js ストレージ機能ソリューション設計やっと要約する序文どの SaaS ...

Centos 7.4 でリモート アクセス制御を実装する方法

1. SSHリモート管理SSH はセキュア チャネル プロトコルであり、主にリモート ログイン、リモ...

Win7 の VMware 仮想マシンに Linux7.2 をインストールするインターネット アクセス構成チュートリアル

参考までに、win7システム上のVMware仮想マシンにlinux7.2インターネットアクセス構成を...

CSS でフローティングにより親要素の高さが崩れる問題を解決するいくつかの方法

以前は、フロートはレイアウトによく使用されていましたが、フローティングレイアウトを使用すると親要素の...

Idea の起動速度を改善し、Tomcat ログの文字化けを解決する方法

目次序文アイデアの起動速度Tomcat ログが文字化けしている序文Idea を再インストールしたので...

nginx リクエスト ヘッダー データ読み取りプロセスの詳細な説明

前回の記事では、nginx がリクエスト ラインのデータを読み取って、リクエスト ラインを解析する方...

キーボード上の各種特殊記号の英語読み方(知識の普及)

キーボード文字英語`バッククォート〜チルダ!叫ぶ@で#ナンバーサイン$ドル%パーセント^キャレット&...

MySQLのさまざまなオブジェクトのサイズと長さの制限について話しましょう

目次識別子の長さ制限権限テーブルの範囲フィールドの長さ制限データベースとテーブルの数の制限テーブルサ...

Centos6.6 で php7 + nginx 環境をインストールする方法

この記事では、centos6.6 で php7 + nginx 環境をインストールする方法について説...

uniapp 要素ノードスタイルの動的変更の詳細な説明

目次1. スタイル属性をバインドして変更するhtml:対応するjs:達成された効果:次に、refを使...

Mysqlのインポートとエクスポート時に発生する問題の解決

背景すべての業務を Docker の運用管理に移行してから、一連の落とし穴に遭遇しましたが、今回は ...

Vueはリストのシームレスなスクロールを実装します

この記事の例では、リストのシームレスなスクロールを実現するためのvueの具体的なコードを参考までに共...

オンラインチャットを実現するVue+sshフレームワーク

この記事では、オンラインチャットを実現するためのVue + sshフレームワークの具体的なコードを参...

MySQL ビューの原理と基本操作例

この記事では、例を使用して、MySQL ビューの原理と基本操作を説明します。ご参考までに、詳細は以下...

リアクトルーティングガード(ルーティングインターセプション)の実装

React は Vue とは異なります。ルートにメタ文字を設定することでルートインターセプションを実...