Nginx 認証 · 1 min read · Jan 23, 2026
Nginxによる基本HTTP認証
このチュートリアルでは、Nginxを使用してサーバー上のディレクトリやウェブサイト全体をパスワードで保護する方法を示します。これは、Apacheの基本HTTP認証に相当します。
1 前提条件
ここでは、www.example.comというウェブサイトを使用し、ドキュメントルートは/var/www/www.example.com/web/、Nginxのvhost設定ファイルは/etc/nginx/sites-enabled/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.1 Apacheのhtpasswdコマンドを使用
Apacheのhtpasswdコマンドを使用したい場合は、システムに存在するか確認してください:
which htpasswdroot@server1:~# which htpasswd
/usr/bin/htpasswd
root@server1:~#上記のような出力が得られれば、すべて問題ありません - htpasswdはすでにインストールされています。コマンドが出力なしで戻る場合、htpasswdはシステムに存在せず、インストールする必要があります。Debian/Ubuntuでは、apache2-utilsパッケージの一部であり、次のようにインストールできます:
apt-get -y install apache2-utils今、パスワードファイル/var/www/www.example.com/.htpasswdを作成し、ユーザーfalkoを保存したいと思います(パスワードファイルには好きな名前を付けることができます - .htpasswdと名付ける必要はありません; Apacheではそのようにパスワードファイルが名付けられるため、私は.htpasswdと名付けました):
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.2 htpasswd.py Pythonスクリプトを使用
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と名付ける必要はありません; Apacheではそのようにパスワードファイルが名付けられるため、私は.htpasswdと名付けました):
htpasswd.py -c -b /var/www/www.example.com/.htpasswd falko falkossecretfalkossecretをユーザー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のユーザーが存在することになります。
3 Nginxの設定
パスワードファイルが用意できたので、/etc/nginx/sites-enabled/www.example.com.vhostのNginx vhost設定に追加するだけです。サーバー{}コンテナ内に追加します。
nano /etc/nginx/sites-enabled/www.example.com.vhostドキュメントルート内のtestディレクトリをパスワードで保護したいので、ここではlocation /test {}を使用します(ウェブサイト全体をパスワードで保護するには、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)にアクセスすると、ユーザー名とパスワードを求められます:

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

そうでない場合は、401 Authorization Requiredエラーメッセージが表示されます:

4 リンク
- Nginx: http://nginx.org/
- Nginx Wiki: http://wiki.nginx.org/
- htpasswd.py Pythonスクリプト: http://trac.edgewall.org/browser/trunk/contrib/htpasswd.py
著者について
ファルコ・ティメは、Timme Hosting(超高速Nginxウェブホスティング)のオーナーです。彼はHowtoForgeのリードメンテイナー(2005年から)であり、ISPConfigのコア開発者の一人(2000年から)です。また、O’Reillyの書籍「Linuxシステム管理」にも貢献しています。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。