ฉันใช้ Drupal 9.3 และสร้างโฟลเดอร์ส่วนตัวนอกไดเรกทอรีราก ฉันทำตามเอกสาร [ลิงค์] และเพิ่มบรรทัดต่อไปนี้ในไฟล์ settings.php ของฉันใน drupal:
$settings['file_private_path'] = '../ส่วนตัว';
ไฟล์ส่วนตัวอยู่นอกไดเร็กทอรีเว็บรูทของฉันดังนี้: /var/www/example.com/private
ด้วยเว็บรูทใน/var/www/example.com/html
.
ฉันใช้ nginx และฉันต้องการแน่ใจว่าฉันได้รักษาความปลอดภัยของไฟล์ส่วนตัวอย่างถูกต้องแล้ว ในการทำเช่นนั้น ฉันได้เพิ่มบล็อคนี้:
ที่ตั้ง ^~ {
ภายใน;
นามแฝง /var/www/example.com/private;
}
ถูกต้องหรือไม่ และฉันได้รักษาความปลอดภัยของไฟล์/โฟลเดอร์ส่วนตัวอย่างถูกต้องหรือไม่
เอกสารกล่าวถึงสิ่งนี้: โปรดทราบว่าเว็บเซิร์ฟเวอร์ที่ไม่ใช่ Apache อาจต้องการการกำหนดค่าเพิ่มเติมเพื่อรักษาความปลอดภัยไดเรกทอรีไฟล์ส่วนตัว
โฮสต์เสมือน Nginx ที่สมบูรณ์ของฉัน (เช่น ไฟล์กำหนดค่า) อยู่ด้านล่าง:
เซิร์ฟเวอร์ {
รูท /var/www/example.com/html;
ดัชนี index.html index.htm index.nginx-debian.html index.php;
server_name example.com www.example.com;
ที่ตั้ง / {
try_files $uri $uri/ /index.php?$args;
}
ตำแหน่ง = /favicon.ico { ปิด log_not_found; access_log off; }
ตำแหน่ง = /robots.txt { ปิด log_not_found; access_log off; อนุญาตทั้งหมด }
ตำแหน่ง ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
หมดอายุสูงสุด
ปิด log_not_found;
}
# ส่งสคริปต์ PHP ไปยังเซิร์ฟเวอร์ FastCGI
#
ตำแหน่ง ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass ยูนิกซ์:/var/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
รวม fastcgi_params;
}
# ปฏิเสธการเข้าถึงไฟล์ .htaccess ถ้ารูทเอกสารของ Apache
# เห็นด้วยกับของ nginx
#
ตำแหน่ง ~ /\.ht {
ปฏิเสธทั้งหมด
}
ที่ตั้ง ^~ {
ภายใน;
นามแฝง /var/www/example.com/private;
}
ฟัง [::]:443 ssl ipv6only=เปิด; # จัดการโดย Certbot
ฟัง 443 ssl; # จัดการโดย Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # จัดการโดย Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # จัดการโดย Certbot
รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot
}
เซิร์ฟเวอร์ {
ถ้า ($host = example.com) {
ส่งคืน 301 https://$host$request_uri;
} # จัดการโดย Certbot
ฟัง 80 ;
ฟัง [::]:80 ;
server_name example.com www.example.com;
กลับ 404; # จัดการโดย Certbot
}