आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं. जानकारी
Apigee Edge में, राउटर, एपीआई के सभी इनकमिंग ट्रैफ़िक को मैनेज करता है. इसका मतलब है कि Edge API प्रॉक्सी के लिए किए गए सभी एचटीटीपी और एचटीटीपीएस अनुरोधों को सबसे पहले Edge Router हैंडल करता है. इसलिए, एपीआई प्रॉक्सी अनुरोध को राउटर पर मौजूद आईपी पते और खुले पोर्ट पर भेजा जाना चाहिए.
वर्चुअल होस्ट की मदद से, एक ही सर्वर या सर्वर के ग्रुप पर कई डोमेन नाम होस्ट किए जा सकते हैं. Edge के लिए, सर्वर Edge राऊटर से जुड़े होते हैं. Router पर वर्चुअल होस्ट तय करके, एक से ज़्यादा डोमेन के अनुरोधों को मैनेज किया जा सकता है.
Edge पर मौजूद वर्चुअल होस्ट, प्रोटोकॉल (एचटीटीपी या एचटीटीपीएस) के साथ-साथ राऊटर पोर्ट और होस्ट एलियास तय करता है. होस्ट एलियास, आम तौर पर एक डीएनएस डोमेन नेम होता है. यह राउटर के आईपी पते से मैप होता है.
उदाहरण के लिए, इस इमेज में दो वर्चुअल होस्ट की परिभाषाओं वाला एक राऊटर दिखाया गया है:
इस उदाहरण में, दो वर्चुअल होस्ट की परिभाषाएं दी गई हैं. इनमें से एक कुकी, domainName1 डोमेन पर एचटीटीपीएस अनुरोधों को मैनेज करती है. वहीं, दूसरी कुकी domainName2 पर एचटीटीपी अनुरोधों को मैनेज करती है.
एपीआई प्रॉक्सी के लिए किए गए अनुरोध पर, राऊटर, आने वाले अनुरोध के होस्ट हेडर और पोर्ट नंबर की तुलना, सभी वर्चुअल होस्ट के लिए तय किए गए होस्ट के उपनामों की सूची से करता है. इससे यह तय किया जाता है कि अनुरोध को कौनसी वर्चुअल होस्ट हैंडल करेगी.
वर्चुअल होस्ट के लिए कॉन्फ़िगरेशन का सैंपल यहां दिया गया है:
ऐंटीपैटर्न
किसी संगठन के एक ही/अलग-अलग एनवायरमेंट में या अलग-अलग संगठनों में, एक ही होस्ट एलियास और पोर्ट नंबर के साथ कई वर्चुअल होस्ट तय करने से, एपीआई अनुरोधों को राउट करते समय भ्रम पैदा होगा. इससे अनचाही गड़बड़ियां हो सकती हैं या एपीआई के काम करने के तरीके में बदलाव हो सकता है.
आइए, एक उदाहरण की मदद से यह समझते हैं कि एक ही होस्ट एलियास वाले कई वर्चुअल होस्ट होने से क्या असर पड़ता है.
मान लें कि एक ही होस्ट एलियास के साथ दो वर्चुअल होस्ट sandbox and secure तय किए गए हैं. जैसे, किसी एनवायरमेंट में api.company.abc.com:
ऊपर दिए गए सेटअप के हिसाब से, दो स्थितियां हो सकती हैं. इनके बारे में यहां बताया गया है.
पहला उदाहरण : एपीआई प्रॉक्सी को सिर्फ़ एक वर्चुअल होस्ट सैंडबॉक्स से अनुरोध स्वीकार करने के लिए कॉन्फ़िगर किया गया है
<ProxyEndpoint name="default">
...
<HTTPProxyConnection>
<BasePath>/demo</BasePath>
<VirtualHost>sandbox</VirtualHost>
</HTTPProxyConnection>
...
</ProxyEndpoint>इस स्थिति में, जब क्लाइंट ऐप्लिकेशन, होस्ट एलियास api.company.abc.com का इस्तेमाल करके किसी एपीआई प्रॉक्सी को कॉल करते हैं, तो उन्हें समय-समय पर 404 गड़बड़ियां दिखेंगी. साथ ही, यह मैसेज दिखेगा:
Unable to identify proxy for host: secure
ऐसा इसलिए होता है, क्योंकि राऊटर, अनुरोधों को sandbox और secure, दोनों वर्चुअल होस्ट पर भेजता है. अनुरोधों को sandbox वर्चुअल होस्ट पर रूट किए जाने पर, क्लाइंट ऐप्लिकेशन को जवाब मिल जाएगा. हालांकि, जब अनुरोधों को secure वर्चुअल होस्ट पर रूट किया जाता है, तो क्लाइंट ऐप्लिकेशन को 404 गड़बड़ी का मैसेज मिलेगा. ऐसा इसलिए, क्योंकि एपीआई प्रॉक्सी को secure वर्चुअल होस्ट पर अनुरोध स्वीकार करने के लिए कॉन्फ़िगर नहीं किया गया है.
दूसरा उदाहरण : एपीआई प्रॉक्सी को, वर्चुअल होस्ट सैंडबॉक्स और सुरक्षित, दोनों के अनुरोध स्वीकार करने के लिए कॉन्फ़िगर किया गया है
<ProxyEndpoint name="default">
...
<HTTPProxyConnection>
<BasePath>/demo</BasePath>
<VirtualHost>sandbox</VirtualHost>
<VirtualHost>secure</VirtualHost>
</HTTPProxyConnection>
...
</ProxyEndpoint>इस स्थिति में, जब क्लाइंट ऐप्लिकेशन, होस्ट के उपनाम api.company.abc.com का इस्तेमाल करके किसी एपीआई प्रॉक्सी को कॉल करते हैं, तो उन्हें प्रॉक्सी लॉजिक के आधार पर मान्य जवाब मिलेगा.
हालांकि, इससे Analytics में गलत डेटा सेव हो जाता है, क्योंकि एपीआई अनुरोधों को दोनों वर्चुअल होस्ट पर रूट किया जाता है. वहीं, असल अनुरोधों को सिर्फ़ एक वर्चुअल होस्ट पर भेजा जाना था.
इससे लॉगिंग की जानकारी और वर्चुअल होस्ट पर आधारित किसी अन्य डेटा पर भी असर पड़ सकता है.
असर
- 404 गड़बड़ियां. ऐसा इसलिए होता है, क्योंकि एपीआई अनुरोधों को किसी ऐसे वर्चुअल होस्ट पर भेजा जा सकता है जिसके लिए एपीआई प्रॉक्सी को अनुरोध स्वीकार करने के लिए कॉन्फ़िगर नहीं किया गया है.
- Analytics का गलत डेटा, क्योंकि एपीआई के अनुरोधों को एक ही होस्ट एलियास वाले सभी वर्चुअल होस्ट पर रूट किया जाता है. हालांकि, अनुरोध सिर्फ़ किसी खास वर्चुअल होस्ट के लिए किए गए थे.
सबसे सही तरीका
- एक ही एनवायरमेंट में, एक ही होस्ट एलियास और पोर्ट नंबर वाले कई वर्चुअल होस्ट तय न करें. इसके अलावा, किसी संगठन के अलग-अलग एनवायरमेंट में भी ऐसा न करें.
अगर एक से ज़्यादा वर्चुअल होस्ट तय करने की ज़रूरत है, तो हर वर्चुअल होस्ट में अलग-अलग होस्ट एलियास का इस्तेमाल करें. जैसा कि यहां दिखाया गया है:
