ในตัวอย่างที่คุณอ้างอิงในคำถามของคุณ:
location @default {
# ...
}
location /somewhere {
try_files $uri @default;
}
หากได้รับคำขอเข้ามาที่http: // your-domain / ที่ใดที่หนึ่งตำแหน่งนั้นจะตรงกับ / ที่ใดที่หนึ่งและจะพยายามตามลำดับสองแห่งเพื่อค้นหาการตอบสนองตามที่ระบุโดยคำสั่ง try_files ตอบสนองด้วยความพยายามครั้งแรก
- ก่อนอื่นจะทดสอบว่ามีไฟล์อยู่ที่ตำแหน่ง / ที่ใดที่หนึ่งหรือไม่และหากไฟล์นั้นมีอยู่ไฟล์นั้นจะถูกส่งคืนในการตอบกลับ
- หากไม่พยายาม try_files สำรองตัวเลือก, @default ซึ่งเรียกว่าnamed_location การตอบสนองสำหรับnamed_locationนี้ถูกระบุโดย
location @default
คำสั่ง named_locationจะไม่ตรงกับคำขอเข้ามาและถูกใช้โดยการอ้างอิงเพื่อระบุการตอบสนองในแนวทางของตำแหน่งอื่น ๆ
ด้วยวิธีนี้คำสั่งifสามารถหลีกเลี่ยงได้ (หากไฟล์มีอยู่ให้ใช้มันมิฉะนั้นจะตอบกลับตามข้อกำหนดใน location @default directive) ดังนั้นจึงสามารถใช้เป็นชวเลขสำหรับเงื่อนไข if คำสั่ง "ถ้า" เป็น "ขมวดคิ้วอย่างแน่นอน" โดยผู้เขียน nginx ( ถ้าเป็นคนชั่ว ) เพราะพวกเขามีข้อ จำกัด บางอย่างและอาจไม่ให้ผลลัพธ์ที่คาดหวัง