[Nginx] 特定 URL を Basic 認証から除外する方法

Nginx で特定 URL を Basic 認証から除外する方法をご紹介します。

Nginx | エンジンエックス

satisfy any と allow all を設定する

Nginx の Basic 認証から特定の location を除外するには、以下のような設定ファイルを記述します。

# /usr/local/nginx/conf/yourdomain.example.com.conf
server {
  listen               80;
 
  # Basic 認証の設定
  auth_basic           "auth";
  auth_basic_user_file /path/to/.htpasswd;
  root                 /path/to/root;
 
  # Basic 認証から除外する設定
  location /path/to/exception {
    satisfy any;
    allow   all;
  }
}

または、以下のように bypass_basic_auth_locations というファイルに記述して include するというアプローチもあります。

# bypass_basic_auth_locations
location /css {
    satisfy any;
    allow   all;
}
location /img {
    satisfy any;
    allow   all;
}
location /js {
    satisfy any;
    allow   all;
}
# /usr/local/nginx/conf/yourdomain.example.com.conf
server {
  listen               80;
 
  # Basic 認証の設定
  auth_basic           "auth";
  auth_basic_user_file /path/to/.htpasswd;
  root                 /path/to/root;
 
  # Basic 認証から除外する設定
  include bypass_basic_auth_locations;
}

以上、Nginx で特定ディレクトリを Basic 認証から除外した、現場からお送りしました。

参考情報