Score:3

เหตุใด nginx จึงส่งคืนรหัสสถานะ 301 เมื่อพยายามเปิดไดเร็กทอรี

ธง zm

ฉันพยายามทำความเข้าใจว่า Nginx ทำงานอย่างไร ตอนนี้ฉันกำลังดำเนินการ ดัชนี และ try_files คำสั่ง ไฟล์ปรับแต่งของฉันคือ:

เหตุการณ์ {}
http {
  rewrite_log บน;
  error_log /var/log/nginx/localhost.error_log ดีบัก;

  เซิร์ฟเวอร์ {
    รูท / แอพ;
    ฟัง 8080;
    ดัชนี index.html;
    ที่ตั้ง / {
      try_files $uri $uri/ =404;
    }
  }
}

อีกด้วย /แอป/ ไดเรกทอรีต้นไม้คือ:

/แอป
|-- abcd.html
|--file.php
|--index.html
|--index.php
|--สสส
| `--index.html
|--style.css
`--thumb.png

เมื่อลองเปิดดู localhost:8080 ทุกอย่างทำงานได้ตามที่คาดไว้ ใช้ครั้งแรก ที่ตั้ง / บริบท. จากนั้นใช้ $uri/ เพื่ออ่านไดเรกทอรีราก เนื่องจากมีการระบุชื่อไฟล์ดัชนี จึงใช้ไฟล์ดัชนีในไดเร็กทอรีนั้น นอกจากนี้ ล็อกไฟล์สามารถแสดงว่า:

...
2021/10/27 11:37:49 [แก้ไขจุดบกพร่อง] 1297#1297: *1 ตำแหน่งทดสอบ: "/"
27/10/2021 11:37:49 [แก้ไขข้อบกพร่อง] 1297#1297: *1 โดยใช้การกำหนดค่า "/"
...
27/10/2021 11:37:49 [แก้ปัญหา] 1297#1297: *1 เฟสทั่วไป: 12
27/10/2021 11:37:49 [debug] 1297#1297: *1 ลองตัวจัดการไฟล์
27/10/2021 11:37:49 [แก้ไขจุดบกพร่อง] 1297#1297: *1 http สคริปต์ var: "/"
27/10/2021 11:37:49 [debug] 1297#1297: *1 พยายามใช้ไฟล์: "/" "/app/"
27/10/2021 11:37:49 [แก้ไขจุดบกพร่อง] 1297#1297: *1 http สคริปต์ var: "/"
27/10/2021 11:37:49 [debug] 1297#1297: *1 พยายามใช้ dir: "/" "/app/"
27/10/2021 11:37:49 [debug] 1297#1297: *1 ลองไฟล์ uri: "/"
27/10/2021 11:37:49 [แก้ปัญหา] 1297#1297: *1 เฟสทั่วไป: 13
2021/10/27 11:37:49 [debug] 1297#1297: *1 ช่วงเนื้อหา: 14
27/10/2021 11:37:49 [แก้ไขข้อบกพร่อง] 1297#1297: *1 เปิดดัชนี "/app/index.html"
2021/10/27 11:37:49 [แก้ไขข้อบกพร่อง] 1297#1297: *1 การเปลี่ยนเส้นทางภายใน: "/index.html?"
...

แต่เมื่อฉันเปิด localhost:8080/sss, อันดับแรกจะตอบกลับด้วยการเปลี่ยนเส้นทางไปที่ localhost:8080/sss/จากนั้นเปิดไฟล์ดัชนีภายในไฟล์ สส/ ไดเรกทอรี นี่คือบันทึก:

27/10/2021 11:46:07 [แก้ไขจุดบกพร่อง] 1297#1297: *3 ตำแหน่งทดสอบ: "/"
2021/10/27 11:46:07 [แก้ไขข้อบกพร่อง] 1297#1297: *3 โดยใช้การกำหนดค่า "/"
2021/10/27 11:46:07 [แก้ไขข้อบกพร่อง] 1297#1297: *3 http cl:-1 สูงสุด:1048576
2021/10/27 11:46:07 [debug] 1297#1297: *3 รีไรท์เฟส: 3
2021/10/27 11:46:07 [debug] 1297#1297: *3 เฟสรีไรท์โพสต์: 4
2021/10/27 11:46:07 [แก้ไขข้อบกพร่อง] 1297#1297: *3 เฟสทั่วไป: 5
...
2021/10/27 11:46:07 [debug] 1297#1297: *3 ลองตัวจัดการไฟล์
27/10/2021 11:46:07 [debug] 1297#1297: *3 http สคริปต์ var: "/sss"
27/10/2021 11:46:07 [debug] 1297#1297: *3 พยายามใช้ไฟล์: "/sss" "/app/sss"
27/10/2021 11:46:07 [debug] 1297#1297: *3 http สคริปต์ var: "/sss"
27/10/2021 11:46:07 [debug] 1297#1297: *3 พยายามใช้ dir: "/sss" "/app/sss"
2021/10/27 11:46:07 [debug] 1297#1297: *3 ลองไฟล์ uri: "/sss"
27/10/2021 11:46:07 [แก้ปัญหา] 1297#1297: *3 เฟสทั่วไป: 13
2021/10/27 11:46:07 [debug] 1297#1297: *3 ช่วงเนื้อหา: 14
...
2021/10/27 11:46:07 [debug] 1297#1297: *3 ช่วงเนื้อหา: 18
27/10/2021 11:46:07 [แก้ไขข้อบกพร่อง] 1297#1297: *3 ชื่อไฟล์ http: "/app/sss"
27/10/2021 11:46:07 [แก้ไขข้อบกพร่อง] 1297#1297: *3 เพิ่มการล้างข้อมูล: 000055AA4A146290
2021/10/27 11:46:07 [แก้ไขจุดบกพร่อง] 1297#1297: *3 http fd แบบคงที่: -1
2021/10/27 11:46:07 [แก้ไขจุดบกพร่อง] 1297#1297: *3 http dir
2021/10/27 11:46:07 [debug] 1297#1297: *3 http จบคำขอ: 301, "/sss?" ก:1, ค:1
27/10/2021 11:46:07 [debug] 1297#1297: *3 http การตอบกลับพิเศษ: 301, "/sss?"
27/2021/10 11:46:07 [debug] 1297#1297: *3 http set ทิ้งเนื้อหา
...

เหตุใดจึงไม่ตอบสนองด้วยไฟล์ดัชนีภายในไฟล์ สส/ ไดเร็กทอรี เช่นเดียวกับไดเร็กทอรีรูทโดยไม่มีการเปลี่ยนเส้นทางภายนอก

Score:3
ธง jp

เดอะ $uri/ ระยะเวลาในก try_files คำสั่งทำงานในลักษณะเดียวกับพฤติกรรมเริ่มต้นของ Nginx

หากคุณระบุ URI ปราศจาก ต่อท้าย / ที่ชี้ไปยังไดเร็กทอรี Nginx จะต่อท้ายก่อน / โดยใช้การเปลี่ยนเส้นทางภายนอก (เช่น 301).

หากคุณระบุ URI กับ ต่อท้าย / ที่ชี้ไปยังไดเร็กทอรี, the ดัชนี คำสั่งจะถูกเรียกใช้และอาจสร้างการเปลี่ยนเส้นทางภายในไปยังไฟล์ใดก็ตามที่ระบุ (เช่น index.html).

แม้ว่า เอกสาร เป็นที่ชัดเจนว่ามีการต่อท้าย / เป็นสิ่งจำเป็นโดย ดัชนี คำสั่ง ฉันไม่สามารถหาได้ว่ามีการบันทึกพฤติกรรมในอดีตไว้ที่ใด

zm flag
เหตุใดคำขอแรกจึงไม่ตอบกลับด้วยการเปลี่ยนเส้นทางภายนอก แม้ว่าจะไม่มี `/` ต่อท้ายก็ตาม เช่น `localhost:8080` นอกจากนี้ ในบริบทตำแหน่ง ฉันได้ระบุให้ลองไฟล์ที่มีการเพิ่ม `/` ต่อท้าย
Richard Smith avatar
jp flag
มันมี `/` ต่อท้าย แถบที่อยู่ของเบราว์เซอร์ซ่อนไม่ให้คุณเห็น แต่เซิร์ฟเวอร์ได้รับ URI เป็น `GET /` - ดูบันทึกการเข้าถึงของคุณ

โพสต์คำตอบ

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