LoginSignup
17
17

More than 5 years have passed since last update.

nginxでBasic認証(ユーザを複数設定する)htpasswdの叩き方

Posted at

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;
}
17
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17