ในแอปพลิเคชันของฉันฉันต้องการตำแหน่ง "/" เพื่อส่งคืนไฟล์ index.html แบบคงที่ฉันต้องการ "/ static" เพื่อให้บริการไฟล์คงที่จากโฟลเดอร์และฉันต้องการให้คำขออื่น ๆ ทั้งหมดส่งคืน 404 ไม่ใช่พบ ในภายหลังฉันจะเปลี่ยนเส้นทางคำขออื่น ๆ ทั้งหมดไปยังเซิร์ฟเวอร์ WSGI
นี่คือการกำหนดค่าของฉันในปัจจุบัน:
# Dev server.
server {
listen 1337;
charset UTF-8;
location / {
rewrite ^ static/index_debug.html break;
}
location /static {
alias /home/tomas/projects/streamcore/static;
}
}
โฟลเดอร์คงทำงานได้อย่างสมบูรณ์ แต่ "/" กำลังกลับมา 404 ไม่พบ ฉันได้ลองด้วย:
alias /home/tomas/projects/streamcore/static/index_debug.html;
ในบล็อกตำแหน่ง แต่จะส่งคืนข้อผิดพลาดเซิร์ฟเวอร์ภายใน 500 ข้อ ดูเหมือนว่าalias
ไม่ชอบไฟล์เดียว นอกจากนี้ฉันได้ลอง:
try_files static/index_debug.html;
แต่นั่นจะหยุดเซิร์ฟเวอร์ไม่ให้เริ่มต้นด้วยข้อผิดพลาด "จำนวนอาร์กิวเมนต์ที่ไม่ถูกต้องในคำสั่ง try_files" เห็นได้ชัดว่าtry_files
ต้องการให้คุณลองมากกว่าหนึ่งไฟล์ซึ่งไม่ใช่พฤติกรรมที่ฉันต้องการ
ดังนั้นคำถามของฉันคือ: ฉันจะกำหนดค่าบล็อกสถานที่ให้คืนไฟล์คงที่ได้อย่างไร
แก้ไข:ฉันเห็นจากคำตอบอื่น ๆ ที่alias
ควรยอมรับไฟล์เดียวเป็นอาร์กิวเมนต์ดังนั้นฉันจึงลอง:
location = / {
alias /home/tomas/projects/streamcore/static/index_debug.html;
}
แต่ฉันยังได้รับข้อผิดพลาดเซิร์ฟเวอร์ภายใน 500 ข้อเท่านั้น บันทึกข้อผิดพลาดสำหรับคำขอ "/" แจ้งว่า:
[การแจ้งเตือน] 28112 # 0: * 7 "/home/tomas/projects/streamcore/static/index_debug.htmlindex.html" ไม่ใช่ไดเรกทอรี
เหตุใดจึงพยายามเปิด "index_debug.htmlindex.html" ฉันไม่ได้ใช้index
คำสั่งทุกที่
location =/
ฉันได้รับ 404 ไม่ใช่พบกับlocation /
ฉันได้รับ 500 ข้อผิดพลาดภายในเซิร์ฟเวอร์
location / { return 404; }
location = / {Index /home/tomas/projects/streamcore/static/index_debug.html;}
try_files static/index_debug.html static/index_debug.html;