nginxでBasic認証(ユーザを複数設定する)htpasswdの叩き方
Basic認証とは、HTTPで定義される認証方式の一つで、ユーザ名とパスワードをコロン(:)でつないで、Base64で送信して認証を行います。
今回は、AWS(Amazon Linux)でnginx v1.10.2-1.30.amzn1を利用。
複数ユーザを作ってみる
まずはコマンドが叩けるか調べてみる
$ which htpasswd
/usr/bin/htpasswd
こんな感じでコマンドが叩ける状態ならOKです。
なければ叩けるようにコマンドをインストールします。
$ sudo yum install -y httpd-tools
これでコマンドが叩けると思います。
$ sudo htpasswd -c /etc/nginx/.htpasswd ユーザ名
ここでユーザが一人追加されると思います。
下記で確認
$ cat /etc/nginx/.htpasswd
hoge:$apr1$1F44gU0L$Sm5kzGBydSQV5uoUZ8PNe0
最初に説明したとおりに、「ユーザ名:パスワード」の形式で保存されていると思います。
ここで、複数ユーザを追加する時ですが、実はさっきのコマンドをそのまま打つと再度新しくファイルが作られて追記にならないことがわかりました・・・
なので、追記するときは下記のコマンドを実行
(自分の場合、これを見落としていて、一旦他のファイルに書き出してからコピペで追加作業をしておりました)
$ sudo htpasswd /etc/nginx/.htpasswd ユーザ名
ちなみに、-cオプションは、manコマンドでみてみるとこう書いてました。
-c Create the passwdfile. If passwdfile already exists, it is rewritten and truncated. This option cannot be combined with the -n option.
要するに-cはCreateだからすでにあったら上書きされるよって書いてます。
複数ユーザを作る場合は、-cオプションを外して実行しましょう。
そうすると、下記のようにユーザが追加されます。
hoge:$apr1$1F44gU0L$Sm5kzGBydSQV5uoUZ8PNe0
fuga:$apr1$DMNE8ana$3OxcmtTmjDeyzsc1nURil1
nginxで設定してみる
$ sudo vim /etc/nginx/conf.d/hoge.conf
server {
auth_basic "basic auth";
auth_basic_user_file /etc/nginx/.htpasswd;
}
server以下にこの2行を追加
$ sudo service nginx reload
これで反映されます。
複数ユーザを作れば、それぞれユーザ毎にログインが可能になります。
まとめ
htpasswdのコマンド
- 初回のみ
$ sudo htpasswd -c /etc/nginx/.htpasswd ユーザ名
- ユーザを追記したい場合
$ sudo htpasswd /etc/nginx/.htpasswd ユーザ名
- nginxの設定
server {
auth_basic "basic auth";
auth_basic_user_file /etc/nginx/.htpasswd;
}