ขณะนี้ฉันมีแอปเชิงมุมที่รับข้อมูลจากแบ็กเอนด์ Symfony เมื่อพัฒนาฉันใช้ เสิร์ฟ
พัฒนาระบบพร็อกซี่เซิร์ฟเวอร์สำหรับเปลี่ยนเส้นทาง /api
, /oauth-โทเค็น
และ /สื่อ
กำหนดเส้นทางไปยังเซิร์ฟเวอร์ส่วนหลังและใช้งานได้ดี
ตอนนี้ฉันต้องการปรับใช้แอปกับเว็บเซิร์ฟเวอร์ ฉันตั้งค่าเซิร์ฟเวอร์ Nginx ที่ให้บริการไฟล์สแตติกที่สร้างโดยแอป Angular ที่สร้างขึ้น เนื่องจากเซิร์ฟเวอร์การพัฒนาไม่ได้อยู่ที่นั่นเพื่อพร็อกซีคำขออีกต่อไป ฉันต้องทำสิ่งนี้ผ่านไฟล์ conf ของ Nginx เพื่อให้ฉันมีพร็อกซีย้อนกลับที่ใช้งานได้
สิ่งที่ฉันต้องการก็คือถ้าฉันขอบางอย่างเช่น รับ http://localhost/api/products/1
คำขอนี้ได้รับมอบฉันทะ รับ http://localhost:81/api/products/1
. สิ่งนี้ควรเหมือนกันสำหรับวิธีการร้องขออื่นๆ ทั้งหมด: POST, PUT, PATCH เป็นต้น
ปัญหาคือฉันไม่สามารถเขียนไฟล์ conf ที่เหมาะกับความต้องการของฉันสำหรับกรณีการใช้งานนี้ได้ สิ่งที่ดีที่สุดที่ฉันได้รับคือการตอบสนอง 302 หรือ 405
นี่คือไฟล์ conf ที่ฉันมี:
เซิร์ฟเวอร์ {
server_name localhost;
รูท /var/www/webapp;
ที่ตั้ง / {
try_files $uri $uri/ /index.html;
}
ตำแหน่ง ~ ^/(?:oauth-token|api|media)/ {
proxy_pass http://localhost:81;
}
}
แบ็กเอนด์โฮสต์บนเซิร์ฟเวอร์เดียวกันและอินสแตนซ์ของ nginx มากกว่าส่วนหน้า แต่อยู่ในพอร์ตอื่น (พอร์ต 81 แทน 80)
ฉันพยายามแยกบล็อกตำแหน่งของฉันออกเป็น 3 บล็อกแยกกันสำหรับแต่ละเส้นทาง ในกรณีที่ regex หรือ proxy pass ของฉันผิด แต่ฉันได้รับผลลัพธ์เดียวกัน:
ตำแหน่ง /api/ {
proxy_pass http://localhost:81/api/;
}
ตำแหน่ง /oauth-โทเค็น/ {
proxy_pass http://localhost:81/oauth-token/;
}
ฉันยังพยายามลบเครื่องหมายทับท้าย URL พร็อกซีพาสเพื่อดูว่าเป็นปัญหาหรือไม่ แต่ไม่มีประโยชน์
ฉันพยายามทำตามคำแนะนำที่พบในโพสต์อื่นๆ เกี่ยวกับ Server Fault แต่น่าเศร้าที่ไม่มีใครทำงานให้ฉัน
คุณช่วยฉันกำหนดค่าไฟล์นี้เพื่อให้คำขอ API เหล่านี้ได้รับพร็อกซีไปยังเซิร์ฟเวอร์ส่วนหลังของฉันได้ไหม ขอบคุณ.