สตริงข้อความค้นหาอ้างอิงถึงพารามิเตอร์ GET ที่คุณระบุหลัง URL เช่น ?ชื่อ=ฟู
. ฉันเดาว่าคุณต้องการให้บริการไฟล์ในไดเร็กทอรีแทน เนื่องจากคุณพูดถึง "out folder ที่เราต้องการให้บริการจาก Nginx"
ในกรณีนี้ ตัวอย่างของคุณควรใช้งานได้ดี แต่ของคุณ try_files กฎต้องการให้คุณระบุชื่อไฟล์ภายใน URL ด้วย
ดังนั้นเมื่อคุณขอ GET www.mysite.com จากนั้น Nginx พยายามหาไฟล์
เส้นทางภายใน ราก
ไดเร็กทอรีที่มีชื่ออย่างใดอย่างหนึ่ง /
, .html
, .html/
หรือล้มเหลวด้วยรหัสข้อผิดพลาด 404 เส้นทาง .html/
อ้างถึงไดเร็กทอรีชื่อ .html
ภายในรูทของคุณและอาจเป็นข้อผิดพลาด
ในกรณีที่คุณมีไฟล์ชื่อ index.html
ในไดเร็กทอรีรูทที่คุณระบุ จากนั้นคำขอต่อไปนี้จะตรงกัน:
รับ www.mysite.com/index.html
(เพราะว่า $ยูริ
)
รับ www.mysite.com/index
(เพราะว่า $uri.html
)
สิ่งที่คุณอาจกำลังมองหาคือ:
ที่ตั้ง / {
รูท /var/www/html/out;
ดัชนี index.html index.htm;
try_files $uri $uri/ =404;
}
สิ่งนี้ทำดังต่อไปนี้:
- มีไฟล์จริงที่ระบุโดย $ยูริในไดเร็กทอรีรูทของคุณ - จากนั้นให้บริการ
- มีเส้นทางไดเร็กทอรีที่ระบุโดย $ยูริในไดเรกทอรีรากของคุณ?
- ถ้าใช่ ตรวจสอบว่ามีไฟล์ชื่อ index.html หรือ ดัชนี.htm - จากนั้นเสิร์ฟสิ่งนี้
- ไม่ตรงกับข้อใดเลย ส่งคืน 404
ดังนั้น รับ www.mysite.com
จะพยายามหาไฟล์ index.html
หรือ ดัชนี.htm
ภายในรากของคุณ
ในกรณีที่คุณยังคงหมายถึงสตริงข้อความค้นหา คุณสามารถเขียนสิ่งนี้:
ที่ตั้ง / {
รูท /var/www/html/out;
try_files /$arg_file =404;
}
จากนั้นขอไลค์ รับ www.mysite.com?file=index.html
จะค้นหาไฟล์ index.html
ภายในรากของคุณ Nginx นั้นยอดเยี่ยมใช่ไหม
หวังว่านี่จะช่วยได้ :)
อ่านเพิ่มเติมเกี่ยวกับ try_files และ ข้อผิดพลาดของ Nginx และข้อผิดพลาดทั่วไป.