ฉันต้องการรักษาความปลอดภัยตำแหน่ง /setup ทั้งหมดโดยใช้การรับรองความถูกต้องพื้นฐาน อย่างไรก็ตาม ฉันพบปัญหาสองประการต่อไปนี้:
- เมื่อใช้ตำแหน่ง /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;
server_name localhost;
ที่ตั้ง / {
try_files $uri $uri/ =404;
}
ตำแหน่ง ~ \.php$ {
รวมตัวอย่าง/fastcgi-php.conf;
fastcgi_pass ยูนิกซ์:/var/run/php/php7.2-fpm.sock;
fastcgi_read_timeout 60;
}
ที่ตั้ง ^~ / ตั้งค่า {
ปฏิเสธทั้งหมด
}
}
เซิร์ฟเวอร์ {
ฟัง 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;
server_name localhost;
ที่ตั้ง ^~ / ตั้งค่า {
auth_basic "เนื้อหาที่ถูกจำกัด";
auth_basic_user_file /etc/nginx/.htpasswd;
รวมตัวอย่าง/fastcgi-php.conf;
fastcgi_pass ยูนิกซ์:/var/run/php/php7.2-fpm.sock;
fastcgi_read_timeout 60;
}
ตำแหน่ง ~ \.php$ {
รวมตัวอย่าง/fastcgi-php.conf;
fastcgi_pass ยูนิกซ์:/var/run/php/php7.2-fpm.sock;
fastcgi_read_timeout 60;
}
# สถานที่ ^~ / {
# ส่งคืน 301 http://$http_host;
# #ปฏิเสธทั้งหมด;
# }
}