Amazon EC2(Amazon Linux)のNginxサーバにphpMyAdminを設定
o_wani
owani.net#stay.hungry
Nginxで基本認証を設定している場合、ALB(Application Load Balancer)などのヘルスチェックリクエストに対してはでBASIC認証を回避する必要があります。
ヘルスチェックが401エラーで失敗していましたので、今回は、ALBのヘルスチェックリクエストを認証から除外する方法を解説します。
NginxでBASIC認証を設定するには通常は以下のように設定していたとします。
http {
....
server {
....
auth_basic "basic authentication";
auth_basic_user_file "/etc/nginx/.htpasswd";
....
}
....
}
Nginxのmap
ディレクティブを使用して、特定のユーザーエージェントに対してBASIC認証を無効にする方法を紹介します。
map
ディレクティブの設定まず、map
ディレクティブを使用して、特定のユーザーエージェント(例:ELB-HealthChecker
)に対してBASIC認証を無効にします。この設定はhttp
ブロック内に追加します。
http {
...
map $http_user_agent $auth_basic {
default "basic authentication";
"ELB-HealthChecker" "";
}
...
}
この設定により、デフォルトでは認証が有効になりますが、ユーザーエージェントがELB-HealthChecker
の場合は無効になります。
server
ブロック内での設定次に、server
ブロック内でauth_basic
ディレクティブを使用して、認証を設定します。
http {
....
server {
....
auth_basic "basic authentication";
auth_basic_user_file "/etc/nginx/.htpasswd";
....
location = /health_check {
# ヘルスチェック用のレスポンス
return 200 "OK";
}
}
....
}
この設定では、auth_basic
ディレクティブに先ほどのmap
変数を使用しています。これにより、通常のリクエストには認証が適用され、ヘルスチェックリクエストには適用されません。
以上2つの手順を反映し、保存します。
設定ファイルを編集した後、Nginxをリロードして変更を反映させます。
$ sudo nginx -s reload
Nginxのmap
ディレクティブを使用することで、特定の条件に基づいてBASIC認証を有効または無効にすることができます。この方法を使用することで、ALBのヘルスチェックリクエストに対して認証を回避し、正常にヘルスチェックが行えるようになります。