Nginx で Web ディレクトリをパスワードで保護する方法
Web プロジェクトのマネージャーは、多くの場合、何らかの方法で自分の作業を保護する必要があります。開発中のウェブサイトをパスワードで保護する方法をよく尋ねられます。
このチュートリアルでは、Nginx をウェブサーバーとして実行するときにウェブディレクトリをパスワードで保護する方法のシンプルだが効果的なテクニックを紹介します。
Apache Web サーバーを使用している場合は、Web ディレクトリのパスワード保護に関するガイドを確認してください。
- Apache での Web ディレクトリのパスワード保護
要件
このチュートリアルの手順を完了するには、次のものが必要です。
- Nginx Webサーバーがインストールされています
- サーバーへの root アクセス
ステップ 1: ユーザーとパスワードを作成する
1. Web ディレクトリをパスワードで保護するには、暗号化されたユーザー名とパスワードを含むファイルを作成する必要があります。
Apache を使用する場合は、「htpasswd」ユーティリティを使用できます。システムにそのユーティリティがインストールされている場合は、次のコマンドを使用してパスワード ファイルを生成できます。
htpasswd -c /path/to/file/.htpasswd username
このコマンドを実行すると、上記のユーザーのパスワードを設定するよう求められ、その後、指定したディレクトリに.htpasswd ファイルが作成されます。
2. このツールがインストールされていない場合は、.htpasswd ファイルを手動で作成できます。ファイルには次の構文が必要です。
username:encrypted-password:comment
使用するユーザー名はあなた次第で、好きなものを選択してください。
より重要な部分は、そのユーザーのパスワードを生成する方法です。
ステップ 2: 暗号化されたパスワードを生成する
3. パスワードを生成するには、Perl に統合された「crypt」 関数を使用します。
そのコマンドの例を次に示します。
perl -le 'print crypt("your-password", "salt-hash")'
実際の例:
perl -le 'print crypt("#12Dfsaa$fa", "1xzcq")'
ファイルを開き、ユーザー名と生成された文字列をセミコロンで区切って入力します。
その方法は次のとおりです。
vi /home/tecmint/.htpasswd
ユーザー名とパスワードを入力します。私の場合は次のようになります。
tecmint:1xV2Rdw7Q6MK.
「Esc」 に続いて 「:wq」 を押してファイルを保存します。
ステップ 3: Nginx 構成を更新する
4. 次に、作業中のサイトに関連付けられている Nginx 構成ファイルを開いて編集します。この例では、次の場所にあるデフォルトのファイルを使用します。
vi /etc/nginx/conf.d/default.conf [For CentOS based systems]
OR
vi /etc/nginx/nginx.conf [For CentOS based systems]
vi /etc/nginx/sites-enabled/default [For Debian based systems]
この例では、nginx のディレクトリ ルート (/usr/share/nginx/html
) をパスワードで保護します。
5. 次に、保護するパスの下に次の 2 行のセクションを追加します。
auth_basic "Administrator Login";
auth_basic_user_file /home/tecmint/.htpasswd;
ファイルを保存し、次のコマンドで Nginx を再起動します。
systemctl restart nginx
OR
service nginx restart
6. 次に、その IP アドレスをコピーしてブラウザに貼り付けると、パスワードの入力を求められます。
それでおしまい!これでメインの Web ディレクトリが保護されました。サイトのパスワード保護を削除する場合は、.htpasswd ファイルに追加した 2 行を削除するか、次のコマンドを使用して追加したユーザーをパスワード ファイルから削除します。
htpasswd -D /path/to/file/.htpasswd username