article-thumbnail

NginxでBasic認証を行う時のまとめ

カテゴリ: NGINX

タグ: Basic認証,NginxでBasic認証,.htaccess

2020-09-29 02:04:59

【概要】

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 {
  # 前方一致した際の特定の処理
}