Debian nginxでパスワード認証

Debian Nginxでパスワード認証をかける

パスワードファイルを作成するために、htpasswdコマンドが必要。apache-utils
で提供されている。

Package: apache2-utils
Source: apache2
Version: 2.4.10-10+deb8u4
Installed-Size: 337
Maintainer: Debian Apache Maintainers
Architecture: i386
Depends: libapr1 (>= 1.4.8-2~), libaprutil1 (>= 1.5.0), libc6 (>= 2.4), libssl1.0.0 (>= 1.0.1)
Description-ja: Apache HTTP サーバ (ウェブサーバ用ユーティリティプログラム)
あらゆるウェブサーバに役立ついくつかのアドオンプログラムを提供します。
次のプログラムが含まれます。
– ab (Apache ベンチマークツール)
– fcgistarter (FastCGI プログラムを起動)
– logresolve (ログファイル中の IP アドレスを名前解決してホスト名に変換)
– htpasswd (basic 認証ファイルを操作)
– htdigest (digest 認証ファイルを操作)
– htdbm (APR を使って DBM フォーマットの basic 認証ファイルを操作)
– htcacheclean (ディスクキャッシュを掃除)
– rotatelogs (周期的にログファイルへの書き込みを停止し、新規ファイルを開く)
– split-logfile (複数の vhost のログを含む単一のログを分割)
– checkgid (実行者が特定のグループに setgid できるかチェック)
– check_forensic (Apache ログファイルから mod_log_forensic の出力を抽出)
– httxt2dbm (RewriteMap で使う dbm ファイルを生成)

apt-get install apache2-utils

パスワードファイルの生成
# htpasswd -c ./.htpasswd hanako
New password:
Re-type new password:
Adding password for user hanako

/etc/nginx/nginx.confの設定

 

さぁアクセスしてみる。

おや、エラー発生
403 Forbidden
nginx/1.8.0

/usr/local/nginx/log/err.log
2016/09/27 09:38:37 [error] 464#0: *1 open() “/usr/local/nginx/.htpasswd” failed (2: No such file or directory), client: 192.168.0.75, server: localhost, request: “GET /favicon.ico HTTP/1.1”, host: “192.168.0.34”, referrer: “http://192.168.0.34/”

あれ、.htpasswdの置き場所間違えた?

/etc/nginx/nginx.conf
location / {
root html;
index index.html index.htm;
auth_basic “Hanako Bassic Test”;
auth_basic_user_file “/usr/local/nginx/passwd/.htpasswd”;
}

コンフィグを訂正

htmlを表示
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

ばっちり表示出来た。

注意
Nginxでパスワードファイル設定を間違うと
https://ja.wikipedia.org/wiki/HTTP_403
HTTP 403、またはエラーメッセージ Forbidden(「閲覧禁止」「禁止されています」の意)は、HTTPステータスコードの一つ。ページが存在するものの、特定のアクセス者にページを表示する権限が付与されず、アクセスが拒否されたことを示すもの。

が表示される。