【WordPress】【Nginx】管理画面にベーシック認証をかける

WordPressの管理画面にベーシック認証をかけるときのお話です。
PHPの設定まわりで苦労しました。

書き方

IP制限のときもそうでしたが、PHPの設定より先にベーシック認証の設定を書かなければいけないようでした

server {
    listen       443 ssl http2 default_server;
~~略~~

    location ~* /wp-login.php|/xmlrpc.php|/wp-admin/((?!admin-ajax.php).)*$ {
        auth_basic "Basic Auth";
        auth_basic_user_file /etc/nginx/basic/.htpasswd;
        fastcgi_pass   phpfpm;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
    }

    location ~ \.php$ {
        fastcgi_pass   phpfpm;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
    }


}

PHPの設定は各サーバーによって違う可能性があるので各自合わせてください

ベーシック認証を行う設定の場所にPHPの設定も書きます。
そうしなければ、ベーシック認証解除後にPHPが動作しなくなり、ファイルが実行されません。

またPHPの設定ファイルより下に書くと先にPHPが実行されてしまうので、適用されなくなります。