Score:0

การกำหนดค่าตำแหน่ง Nginx

ธง br
Vv.

ฉันมีการกำหนดค่า

ตำแหน่ง ~ \.(pdf)$ {
    หมดอายุ 2h;
}

ที่ตั้ง / {
    ...กฎส่วนหลัง...
}

ตอนนี้ฉันต้องการให้ดำเนินการบล็อกแรกสำหรับไฟล์ PDF ที่มีอยู่จริงเท่านั้น มิฉะนั้นคำขอจะถูกส่งไปยังส่วนหลัง ฉันคิดว่าฉันควรเพิ่มในบล็อกตำแหน่งแรก try_files $uri @แบ็คเอนด์:

ตำแหน่ง ~ \.(pdf)$ {
    try_files $uri @แบ็คเอนด์;
    หมดอายุ 2h;
}

ที่ตั้ง / {
    ...กฎส่วนหลัง...
}

ตำแหน่ง @แบ็กเอนด์ {
    ...กฎแบ็กเอนด์เดียวกัน...
}

แต่ปรากฎว่าทั้งสองแห่ง / และ @แบ็กเอนด์ จะเหมือนกันทุกประการ มีวิธีใดที่จะรวมเข้าด้วยกัน หรือฉันควรทำบล็อกที่เหมือนกันสองบล็อก

br flag
ใส่กฎแบ็กเอนด์เพื่อแยกไฟล์และใช้ "include"
br flag
Vv.
ไฟล์แยกต่างหากเป็นแนวคิด แต่ฉันไม่ต้องการเพิ่มความซับซ้อนด้วยไฟล์เพิ่มเติม มีวิธีที่สง่างามกว่านี้ไหม?
Score:0
ธง gr

วิธีแก้ปัญหา คุณสามารถทำให้สั้นลง ที่ตั้ง ถึง

ที่ตั้ง / {
    try_files "" @แบ็กเอนด์;
}

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

ปล

คุณไม่จำเป็นต้องมีแคปเจอร์กรุ๊ปสำหรับตำแหน่ง regex ของคุณ เพียงแค่ ตำแหน่ง ~ \.pdf$ { ... } ก็เพียงพอแล้ว (ยังมีประสิทธิภาพมากกว่าเล็กน้อย)

อัปเดต

คำแนะนำอีกหนึ่งข้อที่จะช่วยลดจำนวนสถานที่ตั้ง:

แผนที่ $uri $ลอง {
    ~\.pdf$ $ยูริ;
    <some_other_mask_to_try_locally_first> $ยูริ;
    # ค่าเริ่มต้นจะเป็นสตริงว่าง
}
เซิร์ฟเวอร์ {
    ...
    ที่ตั้ง / {
        try_files $ลอง @backend;
    }
    ตำแหน่ง @แบ็กเอนด์ {
        ...
    }
}
br flag
Vv.
ขอบคุณสำหรับแนวคิดที่นี่และใน SO ในวงเล็บ - แน่นอนในขณะที่ลดความซับซ้อนของการกำหนดค่าสำหรับคำถามที่ฉันลืมที่จะลบออก)
Ivan Shatsky avatar
gr flag
ตรวจสอบการอัปเดตคำตอบ

โพสต์คำตอบ

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