ฉันเริ่มต้นด้วยแอปพลิเคชัน React ที่ให้บริการจากรูท nginx จากนั้นฉันก็ทำตาม นี้ คำแนะนำในการให้บริการแอปพลิเคชันจากไดเร็กทอรีย่อย (/แอป
). ตามที่แนะนำ ที่นี่ฉันเปลี่ยนการกำหนดค่า nginx จากสิ่งนี้:
ที่ตั้ง / {
รูท /usr/share/nginx/html;
try_files $uri $uri/ /index.html =404;
}
สำหรับสิ่งนี้:
ตำแหน่ง / แอป {
นามแฝง /usr/share/nginx/html;
try_files $uri $uri/ /app/index.html =404;
}
มันใช้งานได้ - ฉันสามารถเรียกดู https://localhost/app และรับไฟล์คงที่ทั้งหมดตามที่คาดไว้ ปัญหาของฉันคือการโหลด URL ซ้ำซึ่งควบคุมโดย React Router (เช่น การส่ง URL ไปยังเซิร์ฟเวอร์ nginx ซึ่งรวมถึงส่วนต่างๆ หลังจาก /แอป
). ตัวอย่างเช่น ก่อนการเปลี่ยนแปลง ทั้งสองสิ่งต่อไปนี้ทำงาน:
- https://localhost <-- ใช้งานได้
- https://localhost/auth/local <-- ใช้งานได้เช่นกัน
ครั้งแรกก็กลับหน้าแรก ประการที่สองทำให้ nginx เริ่มต้นเป็น index.html และเราเตอร์ React ดูแลนำทางภายในไปยังหน้าที่ถูกต้อง (/auth/local
).
หลังจากการเปลี่ยนแปลง คำขอแรกใช้งานได้ แต่คำขอที่ 2 ล้มเหลวด้วย 404:
- https://localhost/app <-- ใช้งานได้
- https://localhost/app/auth/local <-- ล้มเหลวด้วย 404
โดยการเพิ่มส่วนหัวของการแก้ไขข้อบกพร่อง ฉันเห็นว่าหลังจากการเปลี่ยนแปลง ในกรณีที่ 2 nginx จะไม่ดำเนินการบล็อกเลย
ผมทำอะไรผิดหรือเปล่า?