Vreau să securizez întreaga locație /setup utilizând autentificarea de bază. Cu toate acestea, mă confrunt cu următoarele două probleme:
- Când utilizați locație/setup, numai localhost/setup solicită acreditări. Folosirea localhost/setup/mypage.php ocolește complet solicitarea sau puteți doar să faceți clic pe Anulare când vi se solicită și să vedeți în continuare pagina.
- locația ^~ /setup securizează toate fișierele din directorul /setup, dar A) acest lucru face ca toate fișierele php să fie servite ca fișier descărcat și B) provoacă erori 403 la toate fișierele încărcate de html-ul meu. Am "reparat" A) adăugând fragmentele php dar nu știu cum să rezolv B).
Obiectiv: Securizarea locației /setup (și toate fișierele din ea) cu autentificare de bază. Odată ce un utilizator s-a conectat, ar trebui să se permită încărcarea întregului conținut încărcat de php/html (js, imagini etc.).
Config
Server {
asculta 80;
rădăcină /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
nume_server gazdă locală;
Locație / {
try_files $uri $uri/ =404;
}
locație ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_read_timeout 60;
}
locație ^~ /setup {
nega totul;
}
}
Server {
asculta 443 ssl;
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
rădăcină /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
nume_server gazdă locală;
locație ^~ /setup {
auth_basic „Conținut restricționat”;
auth_basic_user_file /etc/nginx/.htpasswd;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_read_timeout 60;
}
locație ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_read_timeout 60;
}
# locație ^~ / {
# returnează 301 http://$http_host;
# #nega totul;
# }
}