Я хочу защитить все местоположение /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;
# #запретить все;
# }
}