NginxでBasic認証を行う時のまとめです。
プロジェクト全体にBasic認証を行う方法や指定した対象にかける方法など、様々な方法についてまとめているので参考にしてみて下さい。
0. 前提
前提として「/etc/nginx/conf.d/domain名.conf」ファイルを編集する事を想定します。
1. プロジェクト全体にBasic認証をかける
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
......
}
2. 指定したディレクトリ配下にBasic認証をかける
※ 下記はroot直下にある、jsonディレクトリに対してBasic認証をかける事を想定しています
location /json/ {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
......
}
3. 完全一致のパスに対してBasic認証をかける
※ 下記は「/json/index.json」のファイルに対してBasic認証をかける事を想定しています
location = /json/index.json {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
......
}
4. 正規表現を使用した方法まとめ
i. = 完全一致
ii. ^~ 前方一致
iii. ~ 正規表現(大文字と小文字が区別されます)
iv. ~* 正規表現2(大文字と小文字が区別されません。修飾子「i」をつけたときの状態)
5. 指定の優先順位
Basic認証で指定した際の優先順位は下記になる。
完全一致(=) > 前方一致(^~) > 正規表現(~) > 正規表現2(~*) > 指定なし
よって、下記のように指定が重複した際には、前方一致の方が優先され、指定なし(location /json)の方は反映されない。
location /json {
# 指定なしでの特定の処理
}
# jsonディレクトリを指定した場合は下記が優先される。
location ^~ /json {
# 前方一致した際の特定の処理
}