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# のデータ テーブル エンティティ クラス生成ツールを作成する方法

推薦する

Spring Boot 階層化パッケージング Docker イメージの実践と分析 (推奨)

目次1. Springbootプロジェクトを準備する2. 関連する設定を実行する3.パッケージ4.D...

よく忘れられがちな CSS のヒント 26 選

これは、よく使われるけれども忘れられがちな CSS 実装方法のコレクションです。抜けや追加があれば、...

インデックスは MySQL クエリ条件で使用されますか?

雇用主から MySQL クエリ条件でインデックスが使用されるかどうかを尋ねられた場合、どのように答え...

MySQL コマンドラインでよく使われる 18 個のコマンド

日常的なウェブサイトの保守と管理では、多くの SQL ステートメントが使用されます。熟練して使用する...

MySQL設定ファイルを変更できない問題の解決方法(Win10)

他の人のために解決した問題を記録します。問題の説明MySQLのバージョンは5.7、オペレーティングシ...

React コードを共有するためのベストプラクティス

プロジェクトがある程度複雑になると、必然的にロジックの再利用の問題に直面することになります。 Rea...

vue3 のさまざまなファイルタイプのプレビュー機能の例

目次序文1. オフィス文書の種類のプレビュー2. PDF形式のプレビュー3. 画像の種類4. ビデオ...

Dockerを使用してサーバー上で複数のPHPバージョンを実行する

PHP7 がリリースされてからかなり時間が経ちますが、パフォーマンスが大幅に向上したことはよく知られ...

MySQL データ型の選択原則

目次小さいけれど美しいシンプルにNULL値を避けるデータタイプを選択する手順データ型の紹介1. 文字...

Viteの新しい体験の詳細な説明

Vite とは何ですか? (フロントエンドの新しいおもちゃです) Vite は、ネイティブ ES モ...

MySQL 構成 SSL マスタースレーブ レプリケーション

MySQL5.6 SSLファイルの作成方法公式ドキュメント: https://dev.mysql.c...

スタイリッシュなウェブページデザインを作成する方法(グラフィックチュートリアル)

「壮大」という言葉は、おそらく現代のデザイナーが最も聞きたくない言葉でしょう。デザイナー:「デザイン...

React双方向データバインディングの原理についての簡単な説明

目次双方向データバインディングとは双方向データバインディングの実装データ影響ビュービューはデータに影...

Docker クリーンアップ環境操作

丁寧に掃除を始めましょう!未使用ボリュームの一覧docker ボリューム ls -qf dangli...

MySQL ストアド関数の詳細な紹介

目次1. ストアド関数を作成する2. ストアド関数の呼び出し3. 保存された関数を削除する4. スト...