notebook

都内でWEB系エンジニアやってます。

nginxでベーシック認証

nginxでベーシック認証

nginxで簡単にベーシック認証を掛ける事ができるという事で実践してみました。 色々調べてみるとapacheがインストールされている場合は「htpasswd」それ以外の場合は「openssl」コマンドで.htpaswdファイルを生成できる模様

htpasswd

htpasswd -c /var/www/.htpasswd testuser
New password:
Re-type new password:
Adding password for user testuser

openssl

echo "testuser:`openssl passwd -apr1 testpass`" > /var/www/.htpasswd

-apr1はapache変数らしい。アルゴリズムの一種だそう

-saltなどもオプションとして記述する事ができるみたい

echo "testuser:`openssl passwd -apr1 -salt xxxxxxx testpass`" > /var/www/.htpasswd

opensslは正直ほとんどよく分からない状態なのでまた別途勉強しないといけないかな。。。

nginx.conf

confの設定は以下追加するだけ

locationごとに設定もできるので管理画面だけ認証掛けるという事も楽に設定できます

location / {
    auth_basic  "Tool";
    auth_basic_user_file "/var/www/.htpasswd";
}

再起動

/etc/init.d/nginx restart

どっちの方法でも無事認証ダイアログが出ました。

ログインするとユーザー名がアクセスログに残るのも確認。

とりあえずとても簡単、リバースプロキシとかも割と簡単に設定できたし。

これはまた別の機会にでも試してみて残す予定