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のヘルスチェックリクエストに対して認証を回避し、正常にヘルスチェックが行えるようになります。
