Я хочу защитить все местоположение /setup, используя базовую аутентификацию. Однако я столкнулся со следующими двумя проблемами:
- При использовании location/setup только localhost/setup запрашивает учетные данные. Использование localhost/setup/mypage.php полностью обходит приглашение, или вы можете просто нажать «Отмена» при появлении запроса и по-прежнему видеть страницу.
 
- расположение ^~ /setup защищает все файлы в каталоге /setup, но A) это приводит к тому, что все файлы php обслуживаются как загруженный файл, и B) вызывает ошибку 403 для всех файлов, загруженных моим html. Я «исправил» A), добавив фрагменты php, но я не знаю, как решить B).
 
Цель: защитить папку /setup (и все файлы в ней) с помощью базовой аутентификации. После того, как пользователь вошел в систему, все содержимое, загруженное php/html (js, изображения и т. д.), также должно быть разрешено для загрузки.
Конфигурация
сервер {
        слушать 80;
        корень /var/www/html;
        индекс index.php index.html index.htm index.nginx-debian.html;
        имя_сервера локальный хост;
        место расположения / {
                try_files $uri $uri/ =404;
        }
        расположение ~ \.php$ {
                включить фрагменты/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
                fastcgi_read_timeout 60;
        }
         расположение ^~ /setup {
                отрицать все;
         }
}
сервер {
        слушать 443 ssl;
        ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
        ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
        корень /var/www/html;
        индекс index.php index.html index.htm index.nginx-debian.html;
        имя_сервера локальный хост;
        расположение ^~ /setup {
                auth_basic "Контент с ограниченным доступом";
                auth_basic_user_file /etc/nginx/.htpasswd;
                включить фрагменты/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
                fastcgi_read_timeout 60;
        }
        расположение ~ \.php$ {
                включить фрагменты/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
                fastcgi_read_timeout 60;
        }
# местоположение ^~ / {
# вернуть 301 http://$http_host;
# #запретить все;
# }
}