Score:0

ดูเหมือนว่า try_files จะค้นหาในไดเร็กทอรีที่ไม่ถูกต้อง

ธง hu

ฉันกำลังพยายามตั้งค่า try_files แต่พบปัญหา: ดูเหมือนว่าไฟล์ทางเลือก "empty.png" จะไม่ถูกดึงขึ้นมา แม้ว่าไฟล์นั้นจะอยู่ที่ /path/to/old_cache_data/empty.png. ไฟล์ที่มีอยู่จริง (เช่น ไม่มีทางเลือกอื่น) จะพบได้โดยไม่มีปัญหา น่าสนใจพอที่ฉันไม่ได้รับ nginx 404 แต่เป็นหน้า 404 จากแอพที่จัดการโดย proxy_pass ด้านล่าง

สิ่งที่ฉันพยายามจนถึงตอนนี้:

  • ลบเครื่องหมายทับซึ่งนำไปสู่ข้อผิดพลาดที่น่าสงสัยนี้: open() "/usr//htmlempty.png" ล้มเหลว (2: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว)ดูเหมือนแปลกสำหรับฉันเนื่องจาก /usr/html ไม่ได้ระบุที่ใดก็ได้เป็นเส้นทางทางเลือก
  • การระบุเส้นทางที่แน่นอน (เช่น try_files $uri /path/to/old_cache_data/empty.png;)

กฎที่เกี่ยวข้อง:

# แคชคงที่แบบดั้งเดิม
ตำแหน่ง /แคช/ {
    รูท /path/to/old_cache_data;
    try_files $uri /empty.png;
}

# ทะลุผ่าน
ที่ตั้ง / {
    [กลุ่มของการตั้งค่าพร็อกซี]
    proxy_pass [url เป้าหมาย];
}

เลยไม่แน่ใจว่าผม "ถือผิด" ตรงไหนกันแน่ มันดูเหมือน try_files ไม่รับบน ราก ในสถานที่ แต่อย่างใดไม่มีทางเลือกแปลก ๆ

แก้ไข: ฉันพบว่าการวาง blank.png ในโฟลเดอร์ย่อย "แคช" และเปลี่ยน try_files เป็น try_files $uri /cache/empty.png; ใช้งานได้จริง ฉันไม่เข้าใจว่าเหตุใดจึงเป็นเช่นนี้

Score:1
ธง gr

ตามที่ อย. ระบุไว้ เอกสาร, พารามิเตอร์สุดท้ายของ try_files คำสั่งสามารถ

  • URI ใหม่
  • รหัสข้อผิดพลาด HTTP: = รหัส;
  • ชื่อตำแหน่ง ID: @location_name.

คุณกำลังใช้ /ว่าง.png ซึ่งถือว่าเป็น URI ใหม่ที่ ไม่ตก ภายใต้ ตำแหน่ง / แคช { ... } จึงถูกเสิร์ฟโดย ที่ตั้ง / { ... }. เมื่อคุณนำเครื่องหมายทับออก คุณจะได้รับ URI ใหม่ ว่าง.png นั่น ไม่อยู่ภายใต้สถานที่ใด ๆ ของคุณรวมถึง ที่ตั้ง / { ... }. ทั้งหมด เซิร์ฟเวอร์ บล็อกมีเส้นทางรูทเริ่มต้น คำนำหน้า/html โดยระบุคำนำหน้าที่เป็น เวลารวบรวม และสามารถตรวจสอบได้กับ nginx -V คำสั่ง (ดูเหมือนว่าของคุณคือ /usr/). ดังที่ได้กล่าวไว้โดย ราก คำสั่ง เอกสาร,

เส้นทางไปยังไฟล์ถูกสร้างขึ้นโดยการเพิ่ม URI ให้กับค่าของ ราก คำสั่ง

ซึ่งให้คำนำหน้าเรา /usr/ + รูทเริ่มต้น /html + ยูริ ว่าง.png = /usr//htmlempty.png.

เมื่อคุณเปลี่ยนครั้งสุดท้าย try_files พารามิเตอร์ไปที่ /cache/empty.png, URI นี้ให้บริการเหมือนกัน ตำแหน่ง / แคช { ... } บล็อกด้วยไฟล์ /path/to/old_cache_data + /cache/empty.png = /path/to/old_cache_data/cache/empty.png. และหากคุณเข้าใจข้อมูลทั้งหมดข้างต้นอย่างถูกต้อง คุณควรสังเกตว่าด้วยการกำหนดค่าของคุณ คุณจะไม่สามารถเข้าถึงไฟล์ใดๆ ในไฟล์ /path/to/old_cache_data โฟลเดอร์ยกเว้นที่อยู่ใน /path/to/old_cache_data/cache โฟลเดอร์ย่อย ตรวจสอบความแตกต่างระหว่าง ราก และ นามแฝง คำแนะนำเพื่อความเข้าใจที่ดีขึ้น

hu flag
อ๊าาาาา เข้าท่าจริงๆ ใช่ ฉันเข้าใจผิดว่ามันเป็นเพียงไฟล์และไม่ได้คิดว่าเป็นเพียง URL อื่นที่ได้รับการประเมินใหม่ ขอบคุณมาก :)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา