location設定に左右されない認証のかけ方

Wordpress などでマルチサイトやら色々設定していると、Basic 認証などかけたいときに、location ディレクティブの適用優先順位で混乱することがある。

そういうときは、下記のように記述すると、location ディレクティブの設定の影響は受けないので、すっきりかける。

http コンテキストで map で認証をかけたい場所を設定する。

    map $request_filename $auth_realm {
        default off;
        ~*/wp-login\.php|/wp-admin/((?!admin-ajax\.php).)*$ 'wp-admin';
    }

server など認証をかけたいコンテキストで認証をかける。

    auth_basic_user_file /path/to/.htpasswd;
    auth_basic $auth_realm;