GNU/Linux >> Linux の 問題 >  >> Linux

Nginxを使用した基本HTTP認証

このチュートリアルでは、Nginxで基本HTTP認証を使用して、サーバーまたはWebサイト全体のディレクトリをパスワードで保護する方法を示します。これは、.htaccess/.htpasswdを使用したApacheの基本HTTP認証に相当するNginxです。

1予備メモ

ここでは、ドキュメントルート/var/www/www.example.com/web/とNginx仮想ホスト構成ファイル/etc/nginx/sites-enabled/www.example.comを使用してWebサイトwww.example.comを使用しています。 vhost。パスワードで保護したいディレクトリは/var/www/www.example.com/web/test/です。

2パスワードファイルの作成

ログインできるはずのユーザーがパスワードとともに(暗号化された形式で)リストされているパスワードファイルが必要です。このようなパスワードファイルを作成するには、Apacheのhtpasswdツールを使用するか、http://trac.edgewall.org/browser/trunk/contrib/htpasswd.pyのPythonスクリプトを使用します。

2.1Apacheのhtpasswdコマンドの使用

Apacheのhtpasswdコマンドを使用する場合は、システムに存在するかどうかを確認してください。

which htpasswd
[email protected]:~# which htpasswd
/usr/bin/htpasswd
[email protected]:~#

上記のような出力が得られれば、すべて問題ありません。htpasswdはすでにインストールされています。コマンドが出力なしで返される場合、htpasswdはシステムに存在しないため、インストールする必要があります。 Debian / Ubuntuでは、これはapache2-utilsパッケージの一部であり、次のようにインストールできます。

apt-get -y install apache2-utils

ここでパスワードファイル/var/www/www.example.com/.htpasswdを作成し、その中にユーザーfalkoを保存します(パスワードファイルには任意の名前を付けることができます。.htpasswdという名前を付ける必要はありません。I .htpasswdという名前を付けたのは、Apacheでパスワードファイルに名前を付ける方法だからです):

htpasswd -c /var/www/www.example.com/.htpasswd falko

ユーザーfalkoのパスワードの入力を求められます。 -cスイッチを使用すると、ファイルが最初から作成されることに注意してください。以前に存在していなかった場合は、作成されます。以前に存在していた場合は、新しいファイルで上書きされ、古いファイルのすべてのユーザーが失われます。したがって、既存のすべてのユーザーを削除せずに別のユーザーを追加する場合は、-cスイッチを指定せずにhtpasswdコマンドを使用します。

htpasswd /var/www/www.example.com/.htpasswd till

最後のコマンドは、ユーザーtillを/var/www/www.example.com/.htpasswdに追加します。これにより、ユーザーfalkoとtillが追加されます。

2.2htpasswd.pyPythonスクリプトの使用

Apacheのhtpasswdコマンドを使用したくない、または使用できない場合は、http://trac.edgewall.org/browser/trunk/contrib/htpasswd.pyからPythonスクリプトを使用できます。

これを/usr/ local / binにダウンロードし、次のように実行可能にします。

cd /usr/local/bin
wget http://trac.edgewall.org/export/14464/trunk/contrib/htpasswd.py
chmod 755 /usr/local/bin/htpasswd.py

ここでパスワードファイル/var/www/www.example.com/.htpasswdを作成し、その中にユーザーfalkoを保存します(パスワードファイルには任意の名前を付けることができます。.htpasswdという名前を付ける必要はありません。I .htpasswdという名前を付けたのは、Apacheでパスワードファイルに名前を付ける方法だからです):

htpasswd.py -c -b /var/www/www.example.com/.htpasswd falko falkossecret

falkossecretをユーザーfalkoのパスワードに置き換えてください。 -cスイッチを使用すると、ファイルが最初から作成されることに注意してください。以前に存在していなかった場合は、作成されます。以前に存在していた場合は、新しいファイルで上書きされ、古いファイルのすべてのユーザーが失われます。したがって、既存のすべてのユーザーを削除せずに別のユーザーを追加する場合は、-cスイッチを指定せずにhtpasswd.pyコマンドを使用します。

htpasswd.py -b /var/www/www.example.com/.htpasswd till tillssecret

最後のコマンドは、ユーザーtillを/var/www/www.example.com/.htpasswdに追加します。これにより、ユーザーfalkoとtillが追加されます。

3Nginxの構成

パスワードファイルが配置されたので、サーバー{}コンテナ内の/etc/nginx/sites-enabled/www.example.com.vhostにあるNginxvhost構成に追加する必要があります。

nano /etc/nginx/sites-enabled/www.example.com.vhost

ドキュメントルートのテストディレクトリをパスワードで保護したいので、ここではlocation / test {}を使用します(Webサイト全体をパスワードで保護するには、location / {}を使用します):

server {
       listen 80;
       server_name www.example.com example.com;
       root /var/www/www.example.com/web;
[...]
       location /test {
                auth_basic "Restricted";
                auth_basic_user_file /var/www/www.example.com/.htpasswd;
       }
[...]
}

後でNginxをリロードします:

service nginx reload

それでおしまい!これで、ブラウザ(http://www.example.com/test)でテストディレクトリに移動でき、ユーザー名とパスワードの入力を求められます。

正しいユーザー名とパスワードを入力すると、アクセスが許可されます:

それ以外の場合は、401AuthorizationRequiredエラーメッセージが表示されます。

  • Nginx:http://nginx.org/
  • Nginx Wiki:http://wiki.nginx.org/
  • htpasswd.py Pythonスクリプト:http://trac.edgewall.org/browser/trunk/contrib/htpasswd.py

著者について

FalkoTimmeはの所有者 Timme Hosting(超高速nginx Webホスティング)。彼はHowtoForge(2005年以降)の主任メンテナーであり、ISPConfig(2000年以降)のコア開発者の1人です。彼はまた、O'Reillyの本「LinuxSystemAdministration」にも寄稿しています。


Linux
  1. nginx-413リクエストエンティティが大きすぎます

  2. Ubuntu20.04にNginxを使用してHTTPGitサーバーをインストールする方法

  3. Debian11にNginxを使用してHTTPGitサーバーをインストールする方法

  1. Ubuntu16.04にNginxを使用してHTTPGitサーバーをインストールする方法

  2. Axel Downloaderを使用したHttps認証?

  3. Linuxでのファイルパーミッションと例

  1. NginXでHTTPをHTTPSにリダイレクトする

  2. Debian9でHTTP/2サポートを使用してNginxを設定する方法

  3. nginx:[emerg] /etc/nginx/sites-enabled/example.com:3 の不明なディレクティブ