ฉันใช้ NGINX เพื่อ proxy_pass
คำขอทั้งหมดที่มีคำนำหน้า /รับรองความถูกต้อง/
ไปยังเซิร์ฟเวอร์ nodejs api ที่ localhost:3000
.
ฉันมีไฟล์ปรับแต่งเดียวนี้ /etc/nginx/sites-enabled/default3.conf
:
เซิร์ฟเวอร์ {
ตำแหน่ง /auth/ {
เขียนใหม่ /auth/(.+) /$1 ตัวแบ่ง;
proxy_pass http://127.0.0.1:3000;
ปิด proxy_redirect;
proxy_set_header โฮสต์ $host;
}
}
มันใช้งานได้ดีสำหรับคำขอส่วนใหญ่ของฉัน (แทนที่จะเป็น GET http://localhost:3000/logout
, รับ http://localhost/auth/logout
จะทำงานตามที่คาดไว้) ยกเว้นคำขอนี้ GET http://localhost/auth/docs
ซึ่งควรแมปกับ http://localhost:3000/docs
แต่ฉันได้รับการเปลี่ยนเส้นทาง:
HTTP/1.1 301 ย้ายอย่างถาวร
เซิร์ฟเวอร์: nginx/1.18.0 (Ubuntu)
วันที่: วันพุธที่ 15 ธันวาคม 2021 01:59:02 GMT
ประเภทเนื้อหา: text/html; ชุดอักขระ = UTF-8
ความยาวเนื้อหา: 175
X-ขับเคลื่อนโดย: Express
การควบคุมการเข้าถึงอนุญาตแหล่งกำเนิด: *
นโยบายความปลอดภัยเนื้อหา: default-src 'ไม่มี'
X-Content-Type-Options: ไร้สาระ
ที่อยู่: /docs/
จากนั้นไม่พบ 404 แทน:
ไม่พบ HTTP/1.1 404
เซิร์ฟเวอร์: nginx/1.18.0 (Ubuntu)
วันที่: วันพุธที่ 15 ธันวาคม 2021 03:20:26 GMT
ประเภทเนื้อหา: text/html
การเข้ารหัสการถ่ายโอน: chunked
การเชื่อมต่อ: มีชีวิตอยู่
การเข้ารหัสเนื้อหา: gzip
ดูเหมือนว่าเมื่อฉันได้รับ http://localhost/auth/docs
คำขอถึงเซิร์ฟเวอร์ nodejs ของฉัน แต่จากนั้นถูกเปลี่ยนเส้นทางกลับไปที่ http://localhost/docs
แต่สิ่งนี้จะเป็นไปได้อย่างไร? ฉันยังสามารถรับได้ http://localhost:3000/docs
โดยไม่มีปัญหา
ปรับปรุง
http://localhost:3000/docs
เป็นที่ที่ฉันให้บริการ Swagger UI สำหรับเซิร์ฟเวอร์ API โดยใช้โมดูล npm ผยอง-UI-ด่วน
.