Score:0

ให้บริการดัชนีอัตโนมัติของ nginx ภายใต้เส้นทางอื่น

ธง il

ฉันพบปัญหาที่ฉันต้องการเปิดใช้งาน autoindex ของ nginx สำหรับบางไดเร็กทอรี แต่มีไฟล์ดัชนีของตัวเองด้วย
ดังนั้นฉันจึงสงสัยว่ามีวิธีทำให้ nginx ให้บริการเป็นหน้า autoindex ในเส้นทางอื่นหรือไม่ สิ่งที่ต้องการ /path/to/dir/autoindex.html

ฉันลองต่อไปนี้:

    ตำแหน่ง ~* ^/path/to/dir/autoindex.html$ {
        เปิดดัชนีอัตโนมัติ;
        autoindex_format html; 

        try_files /path/to/dir/ =404;
    }

แต่ที่แปลกเพียงแค่เปลี่ยนเส้นทางฉันไป /เส้นทาง/ถึง/dir/ และแสดงหน้าดัชนีเริ่มต้นของฉัน

นอกจากนี้ ฉันต้องการเก็บสิ่งนี้ไว้สำหรับโฟลเดอร์ที่ไม่มีหน้าดัชนี เพื่อให้เส้นทางสำหรับดัชนีอัตโนมัติสอดคล้องกันเสมอ

us flag
โปรดระบุตัวอย่างที่ชัดเจนของคำขอและสิ่งที่ควรให้บริการ เป็นการยากที่จะดูว่าคุณต้องการขอ URL ใดและพาธระบบไฟล์ autoindex ใดที่คุณต้องการส่งคืน
il flag
@TeroKilkanen `http://example.com/path/to/dir/autoindex.html` ควรเซิร์ฟเวอร์ดัชนีอัตโนมัติของ `$webroot/path/to/dir`
Score:0
ธง il

ฉันพบวิธีแก้ปัญหาที่ค่อนข้างดีที่ใช้การเปลี่ยนเส้นทางและลำดับของมันอย่างชาญฉลาด:

เซิร์ฟเวอร์ {
    # ฟังคำสั่ง ฯลฯ ...

    รูท /path/to/web/root/dir;

    # Autoindex จะแสดงเฉพาะเมื่อ nginx ไม่สามารถจัดไฟล์ดัชนีของตัวเองได้
    ดัชนี xxx;

    เขียนใหม่ ^(?<path>.*)/autoindex\.html$ $path/ สุดท้าย;
    เขียนใหม่ ^(?<path>.*)/$ $path/index.html สุดท้าย;

    เปิดดัชนีอัตโนมัติ;

    # การกำหนดค่าเซิร์ฟเวอร์ที่เหลือ...
}

ข้อเสียเพียงอย่างเดียวคือคุณไม่สามารถใช้ไฟล์ดัชนีที่แตกต่างกันหลายไฟล์ได้ ดัชนี คำสั่งสนับสนุนตามปกติ try_files อาจทำให้สิ่งนี้ยุ่งเหยิงได้เนื่องจากคุณต้องแน่ใจว่าสำหรับ <เส้นทาง>/ URI nginx ไม่พบไฟล์ใด ๆ ดังนั้นจึงแสดงดัชนีอัตโนมัติ

จะไม่แนะนำสิ่งนี้ในสิ่งใดนอกจากเซิร์ฟเวอร์หรือตำแหน่งที่ตั้งเซิร์ฟเวอร์เฉพาะไฟล์แบบสแตติก

Score:0
ธง us

การเขียนซ้ำภายใน nginx อาจใช้ได้ที่นี่:

ตำแหน่ง /path/autoindex.html {
    เขียนใหม่ ^ /path/ สุดท้าย;
}

ตำแหน่ง / เส้นทาง {
    ภายใน; # ตำแหน่งนี้ใช้สำหรับการเปลี่ยนเส้นทางภายในเท่านั้น

    เปิดดัชนีอัตโนมัติ;

    try_files $uri $uri/ =404;
}

ตำแหน่ง ~ ^/เส้นทาง {
    ... กำหนดค่าสิ่งที่คุณต้องการแสดงด้วยเส้นทาง
}
il flag
ฉันถามเกี่ยวกับการมีหน้าดัชนีอัตโนมัติในเส้นทางอื่นที่ไม่ใช่เส้นทางที่ลงท้ายด้วย `/` ฉันรู้วิธีเปิดใช้งานดัชนีอัตโนมัติ
us flag
อา ช่างโง่เขลาของฉัน ฉันอัปเดตคำตอบแล้ว
il flag
น่าเศร้าที่ส่งคืน 404 สำหรับทุก URI ที่มี `/path` การเปลี่ยนตำแหน่งเป็น `location = /path/` จะแก้ไขส่วนนั้น แต่ `/path/autoindex.html` ยังคงส่งคืน 404
us flag
ฉันได้เพิ่มบล็อก `สถานที่' ที่จัดการคำขอภายนอกไปยัง `/path`
il flag
ยังคงเป็น 404 สำหรับ `/path/autoindex.html`
il flag
แม้แต่การเปลี่ยน `try_files $uri $uri/ =404;` เป็น `try_files $uri $uri/ =403;` ก็ยังคืนค่า 404 โดยบอกฉันว่าดูเหมือนจะไม่โดนบล็อกตำแหน่งอื่น

โพสต์คำตอบ

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