คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
ใน Apigee Edge เราเตอร์จะจัดการการรับส่งข้อมูล API ขาเข้าทั้งหมด ซึ่งหมายความว่าคำขอ HTTP และ HTTPS ทั้งหมดที่ส่งไปยังพร็อกซี API ของ Edge จะได้รับการจัดการโดยเราเตอร์ของ Edge ก่อน ดังนั้น คำขอพร็อกซี API จึงต้องส่งไปยังที่อยู่ IP และพอร์ตที่เปิดอยู่บนเราเตอร์
โฮสต์เสมือนช่วยให้คุณโฮสต์ชื่อโดเมนหลายรายการในเซิร์ฟเวอร์เดียวหรือกลุ่มเซิร์ฟเวอร์ สำหรับ Edge เซิร์ฟเวอร์จะสอดคล้องกับเราเตอร์ของ Edge การกำหนดโฮสต์เสมือนบนเราเตอร์จะช่วยให้คุณ จัดการคำขอที่ส่งไปยังหลายโดเมนได้
โฮสต์เสมือนบน Edge จะกำหนดโปรโตคอล (HTTP หรือ HTTPS) พร้อมกับพอร์ตเราเตอร์และนามแฝงโฮสต์ โดยทั่วไปแล้ว นามแฝงโฮสต์จะเป็นชื่อโดเมน DNS ที่แมปกับที่อยู่ IP ของเราเตอร์
ตัวอย่างเช่น รูปภาพต่อไปนี้แสดงเราเตอร์ที่มีการกำหนดโฮสต์เสมือน 2 รายการ
ในตัวอย่างนี้มีการกำหนดโฮสต์เสมือน 2 รายการ รายการหนึ่งจัดการคำขอ HTTPS ใน โดเมน domainName1 ส่วนอีกรายการจัดการคำขอ HTTP ใน domainName2
เมื่อได้รับคำขอที่ส่งไปยังพร็อกซี API เราเตอร์จะเปรียบเทียบส่วนหัวของโฮสต์และหมายเลขพอร์ตของคำขอขาเข้า กับรายการนามแฝงโฮสต์ ที่กำหนดโดยโฮสต์เสมือนทั้งหมดเพื่อกำหนดว่าโฮสต์เสมือนใด จะจัดการคำขอ
ตัวอย่างการกำหนดค่าสำหรับโฮสต์เสมือนแสดงอยู่ด้านล่าง
รูปแบบที่ไม่แนะนำ
การกำหนดโฮสต์เสมือนหลายรายการที่มีนามแฝงโฮสต์และหมายเลขพอร์ตเดียวกันในสภาพแวดล้อมเดียวกัน/ต่างกัน ขององค์กรหรือในหลายองค์กรจะทำให้เกิดความสับสนเมื่อมีการกำหนดเส้นทางคำขอ API และอาจทำให้เกิดข้อผิดพลาด/ลักษณะการทำงานที่ไม่คาดคิด
มาดูตัวอย่างเพื่ออธิบายผลกระทบของการมีโฮสต์เสมือนหลายรายการที่มีนามแฝงโฮสต์เดียวกัน
สมมติว่ามีการกำหนดโฮสต์เสมือน 2 รายการ sandbox and secure ที่กำหนด
ที่มีนามแฝงโฮสต์เดียวกัน เช่น api.company.abc.com ในสภาพแวดล้อม
การตั้งค่าข้างต้นอาจทำให้เกิดสถานการณ์ 2 แบบตามที่อธิบายไว้ในส่วนต่อไปนี้
สถานการณ์ที่ 1 : พร็อกซี API ได้รับการกำหนดค่าให้ยอมรับคำขอที่ส่งไปยังโฮสต์เสมือน sandbox เพียงรายการเดียว
<ProxyEndpoint name="default">
...
<HTTPProxyConnection>
<BasePath>/demo</BasePath>
<VirtualHost>sandbox</VirtualHost>
</HTTPProxyConnection>
...
</ProxyEndpoint>ในสถานการณ์นี้ เมื่อแอปพลิเคชันไคลเอ็นต์เรียกพร็อกซี API ที่เฉพาะเจาะจงโดยใช้
นามแฝงโฮสต์ api.company.abc.com แอปพลิเคชันจะได้รับข้อผิดพลาด 404 เป็นระยะๆ พร้อมข้อความต่อไปนี้
Unable to identify proxy for host: secure
เนื่องจากเราเตอร์จะส่งคำขอไปยังโฮสต์เสมือน sandboxและ secure
เมื่อคำขอถูกกำหนดเส้นทางไปยังโฮสต์เสมือน sandbox แอปพลิเคชันไคลเอ็นต์
จะได้รับการตอบกลับที่สำเร็จ อย่างไรก็ตาม เมื่อคำขอถูกกำหนดเส้นทางไปยัง secure โฮสต์เสมือน
แอปพลิเคชันไคลเอ็นต์จะได้รับข้อผิดพลาด 404 เนื่องจากพร็อกซี API ไม่ได้กำหนดค่าให้ยอมรับคำขอใน
secure โฮสต์เสมือน
สถานการณ์ที่ 2 : พร็อกซี API ได้รับการกำหนดค่าให้ยอมรับคำขอที่ส่งไปยังโฮสต์เสมือน sandbox และ secure
<ProxyEndpoint name="default">
...
<HTTPProxyConnection>
<BasePath>/demo</BasePath>
<VirtualHost>sandbox</VirtualHost>
<VirtualHost>secure</VirtualHost>
</HTTPProxyConnection>
...
</ProxyEndpoint>ในสถานการณ์นี้ เมื่อแอปพลิเคชันไคลเอ็นต์เรียกพร็อกซี API ที่เฉพาะเจาะจงโดยใช้
นามแฝงโฮสต์ api.company.abc.com แอปพลิเคชันจะได้รับการตอบกลับที่ถูกต้องตามตรรกะของพร็อกซี
อย่างไรก็ตาม การดำเนินการนี้จะทำให้ระบบจัดเก็บข้อมูลที่ไม่ถูกต้องใน Analytics เนื่องจากคำขอ API ถูกกำหนดเส้นทางไปยัง โฮสต์เสมือนทั้ง 2 รายการ ในขณะที่คำขอจริงมีจุดประสงค์เพื่อส่งไปยังโฮสต์เสมือนเพียงรายการเดียว
การดำเนินการนี้ยังอาจส่งผลต่อข้อมูลการบันทึกและข้อมูลอื่นๆ ที่อิงตามโฮสต์เสมือนด้วย
ผลกระทบ
- ข้อผิดพลาด 404 เนื่องจากคำขอ API อาจถูกกำหนดเส้นทางไปยังโฮสต์เสมือนที่พร็อกซี API อาจไม่ได้ กำหนดค่าให้ยอมรับคำขอ
- ข้อมูล Analytics ไม่ถูกต้องเนื่องจากคำขอ API ถูกกำหนดเส้นทางไปยังโฮสต์เสมือนทั้งหมดที่มี นามแฝงโฮสต์เดียวกัน ในขณะที่คำขอถูกส่งไปยังโฮสต์เสมือนที่เฉพาะเจาะจงเท่านั้น
แนวทางปฏิบัติแนะนำ
- อย่ากำหนดโฮสต์เสมือนหลายรายการที่มีนามแฝงโฮสต์และหมายเลขพอร์ตเดียวกันในสภาพแวดล้อมเดียวกัน หรือสภาพแวดล้อมต่างๆ ขององค์กร
หากจำเป็นต้องกำหนดโฮสต์เสมือนหลายรายการ ให้ใช้นามแฝงโฮสต์ที่แตกต่างกันในโฮสต์เสมือนแต่ละรายการดังที่แสดงด้านล่าง
