このチュートリアルでは、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エラーメッセージが表示されます。
4つのリンク
- 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」にも寄稿しています。