#まず始めに
今回やりたかったことは、表題通り。
NginxのBasic認証を複数ページで別々のユーザ・パスでかける
ページA(page_a)にユーザ(alpha)・パス
ページB(page_b)にユーザ(beta)・パスでBasic認証をかけ、
ページAでユーザ(beta)・ページBにユーザ(alpha)では認証をできないようにしたい。
まずはBasic認証についてまとめてみました。
#Basic認証
Basic認証とはWebサイトの特定のページやファイルにアクセス制限をかけることができる認証方法の1つです。
Basic認証をかけると、認証をかけたWebサイトにアクセスしようとしたとき、
認証ダイアログが立ち上がって、ユーザー名(ID)とパスワードの入力が求められます。
簡易的な認証のため、公開前のWEBサイトの関係者のみの閲覧などの目的でも使用できます。
#導入方法
今回はOSはlinuxでNginxは導入済みを想定。
導入方法はこちら。
###htpasswd コマンドインストール
$ sudo yum install httpd-tools
###.htpasswd ファイルの作成
ユーザ名とパスワードを記載
$ sudo htpasswd -c /etc/nginx/.htpasswd alpha
New password: alpha1
Re-type new password: alpha1
Adding password for user username
$ cat /etc/nginx/.htpasswd
alpha:$alpha1$1HL4gU0L$Sm5cgGBydSUV5uo9Z8aNe0
###nginxの設定ファイルの追記
Basic認証と.htpasswd ファイルを読み込みの記載。
$vim /etc/nginx/nginx.conf
…
server {
listen 80;
root /usr/share/nginx/html;
index index.html index.htm;
location /page_a{
#認証時に表示されるメッセージ
auth_basic "Restricted";
#.htpasswdファイルのパス
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass: http://127.0.0.1:8000;
}
}
…
※proxy_passは忘れがちですが、gunicornとかWSGI使ってると404エラーが出ます。
###再起動
$sudo service nginx restart
以上でページA(page_a)にはBasic認証がかかりました!
サイトにアクセスするとBASIC認証がかかっていることが確認できます。
#異なるページにBasic認証をかける
先ほど作成した.htpasswdとは異なるファイルにユーザB(beta)・パスを記載。
$ sudo htpasswd -c /etc/nginx/.htpasswd_beta beta
New password: beta2
Re-type new password: beta2
Adding password for user username
$ cat /etc/nginx/.htpasswd_beta
beta:$beta2$1HL48ana$3OxkzGBydDeyzsc1nURil1
####nginx.confへの追記。
$vim /etc/nginx/nginx.conf
…
server {
listen 80;
root /usr/share/nginx/html;
index index.html index.htm;
location /page_a{
#認証時に表示されるメッセージ
auth_basic "Restricted";
#.htpasswdファイルのパス
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass: http://127.0.0.1:8000;
}
location /page_b{
auth_basic "Restricted";
#ページBの.htpasswdファイルのパス
auth_basic_user_file /etc/nginx/.htpasswd_beta;
proxy_pass: http://127.0.0.1:8000;
}
}
…
####再起動
$sudo service nginx restart
以上でページBにもBasic認証がかけることができました。
#最後に
今回は別々のページで同一のユーザ・パスが使えないようにするため、.htpasswdを分けました。
単純に複数ページに認証をかけるだけなら、分ける必要がないです。
用途に合わせた設定をお勧めします。
最後まで読んでいただきありがとうございました。