ฉันมีแอป js ถัดไปซึ่งฉันปรับใช้บนพอร์ต 3000 และตั้งค่าพร็อกซี 3000 บน nginx
ตอนนี้ฉันมีเซิร์ฟเวอร์แบ็กเอนด์ Node js ที่กำหนดเองซึ่งฉันต้องการทำงานบนเซิร์ฟเวอร์เดียวกันบนพอร์ต 5000 ที่แตกต่างกัน
ฉันตั้งค่า nginx แบบนี้
ที่ตั้ง / {
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header อัพเกรด $http_upgrade;
proxy_set_header การเชื่อมต่อ 'อัปเกรด';
proxy_set_header โฮสต์ $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:3000;
}
ที่ตั้ง ^~ /api {
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header อัพเกรด $http_upgrade;
proxy_set_header การเชื่อมต่อ 'อัปเกรด';
proxy_set_header โฮสต์ $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:5000;
}
ฉันไม่มีปัญหาในการเข้าถึงแอปบน example.com
ฉันตั้งค่าตำแหน่ง /api สำหรับเชื่อมต่อการดึงข้อมูล server.js / api
เมื่อฉันเรียกแบบนี้
axios.get(example.com/api)
ข้อผิดพลาดที่ส่งคืน - ไม่สามารถรับ /api/
แต่เมื่อฉันตั้งค่าพร็อกซีตำแหน่ง nginx เช่นนี้
proxy_pass http://localhost:5000/;
ด้วยเครื่องหมายทับ การทำงานและ axios ดึงข้อมูลได้สำเร็จ
แต่เมื่อใดก็ตามที่ฉันพยายามดึงเส้นทางอื่นจากไฟล์ server.js เช่น
axios.get(example.com/api/credential)
มันแสดงข้อผิดพลาดอีกครั้งเช่นนี้
ไม่สามารถรับ // ข้อมูลรับรอง
ส่งคืนด้วยเครื่องหมายทับคู่ // ข้อมูลรับรอง
เส้นทาง '/' เดียวที่ทำงานจาก server.js โดยการดึงข้อมูล example.com/api
โดยไม่มีเครื่องหมายทับบนพร็อกซี ข้อผิดพลาดที่ส่งคืน ไม่สามารถ GET /api หรือไม่สามารถ GET api/ข้อมูลประจำตัว
กรุณาช่วย.
ขอบคุณล่วงหน้า.
อัปเดต
ฉันแก้ไขด้วย อีวาน คำตอบ. ตอนนี้ฉันมีปัญหาใหม่กับการกำหนดค่านั้น
ฉันใช้ socket.io ข้าง axios ดังนั้นเมื่อใดก็ตามที่ฉันพยายามเชื่อมต่อผ่าน socket.io
รหัสซ็อกเก็ตลูกค้าของฉันคือ ..
นำเข้า io จาก "socket.io-client";
ซ็อกเก็ต const = io ("https://example.com/api");
และการกำหนดค่าเซิร์ฟเวอร์ซ็อกเก็ตคือ ..
const io = ต้องการ ("socket.io") (เซิร์ฟเวอร์, {
คอร์: {
ต้นทาง: "*",
},
});
ตอนนี้เมื่อโหลดหน้าคอนโซลกำลังบันทึก ..
รับ https://example.com/socket.io?EIO=4&transport=polling&t=O4UTf4l 404 (ไม่พบ)
กรุณาช่วย.