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が実行されてしまうので、適用されなくなります。