Tôi muốn bảo mật toàn bộ vị trí/thiết lập bằng cách sử dụng xác thực cơ bản. Tuy nhiên tôi đang gặp phải hai vấn đề sau:
- Khi sử dụng vị trí/thiết lập, chỉ nhắc nhở localhost/thiết lập cho thông tin đăng nhập. Sử dụng localhost/setup/mypage.php bỏ qua hoàn toàn lời nhắc hoặc bạn chỉ cần nhấp vào hủy khi được nhắc và vẫn thấy trang.
- vị trí ^~ /setup bảo mật tất cả các tệp trong thư mục /setup nhưng A) điều này khiến tất cả các tệp php được phân phối dưới dạng tệp đã tải xuống và B) nó gây ra lỗi 403 trên tất cả các tệp được tải bởi html của tôi. Tôi đã "sửa" A) bằng cách thêm đoạn mã php nhưng tôi không biết cách giải quyết B).
Mục tiêu: Bảo mật vị trí /setup (và tất cả các tệp trong đó) bằng xác thực cơ bản. Sau khi người dùng đăng nhập, tất cả nội dung được tải bởi php/html (js, hình ảnh, v.v.) cũng sẽ được phép tải.
cấu hình
người phục vụ {
nghe 80;
gốc/var/www/html;
chỉ mục index.php index.html index.htm index.nginx-debian.html;
máy chủ_tên máy chủ cục bộ;
địa điểm / {
try_files $uri $uri/ =404;
}
vị trí ~ \.php$ {
bao gồm đoạn trích/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_read_timeout 60;
}
vị trí ^~ /thiết lập {
Phủ nhận tất cả;
}
}
người phục vụ {
nghe 443 ssl;
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
gốc/var/www/html;
chỉ mục index.php index.html index.htm index.nginx-debian.html;
máy chủ_tên máy chủ cục bộ;
vị trí ^~ /thiết lập {
auth_basic "Nội dung bị hạn chế";
auth_basic_user_file /etc/nginx/.htpasswd;
bao gồm đoạn trích/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_read_timeout 60;
}
vị trí ~ \.php$ {
bao gồm đoạn trích/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_read_timeout 60;
}
# vị trí ^~ / {
# trả về 301 http://$http_host;
# #Phủ nhận tất cả;
# }
}