एंटीपैटर्न: एक ही होस्ट उपनाम और पोर्ट नंबर के साथ एक से ज़्यादा वर्चुअल होस्ट तय करें

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

Apigee Edge में, Router सभी आने वाले एपीआई ट्रैफ़िक को हैंडल करता है. इसका मतलब है कि Edge एपीआई प्रॉक्सी के सभी एचटीटीपी और एचटीटीपीएस अनुरोध, सबसे पहले Edge राऊटर से मैनेज किए जाते हैं. इसलिए, एपीआई प्रॉक्सी अनुरोध को आईपी पते पर और राऊटर पर ओपन पोर्ट पर भेजा जाना चाहिए.

वर्चुअल होस्ट की मदद से, एक सर्वर या सर्वर के ग्रुप पर कई डोमेन नेम होस्ट किए जा सकते हैं. Edge के लिए, सर्वर Edge राऊटर से जुड़े होते हैं. राऊटर पर वर्चुअल होस्ट तय करके, एक से ज़्यादा डोमेन के अनुरोधों को मैनेज किया जा सकता है.

Edge पर वर्चुअल होस्ट, राऊटर पोर्ट और होस्ट उपनाम के साथ प्रोटोकॉल (एचटीटीपी या एचटीटीपीएस) के बारे में बताता है. होस्ट अन्य नाम आम तौर पर एक डीएनएस डोमेन नेम होता है, जो राऊटर के आईपी पते से मैप करता है.

उदाहरण के लिए, नीचे दी गई इमेज में एक राऊटर दिखाया गया है. इसमें दो वर्चुअल होस्ट परिभाषाओं को शामिल किया गया है:

इस उदाहरण में, वर्चुअल होस्ट की दो परिभाषाएं हैं. एक डोमेन domainName1 पर एचटीटीपीएस अनुरोधों को हैंडल करता है, जबकि दूसरा domainName2 पर एचटीटीपी अनुरोधों को हैंडल करता है.

एपीआई प्रॉक्सी से किए गए अनुरोध पर, राऊटर, इनकमिंग अनुरोध के होस्ट हेडर और पोर्ट नंबर की तुलना सभी वर्चुअल होस्ट के तय किए गए होस्ट उपनाम से करता है. इससे यह तय किया जाता है कि अनुरोध को कौनसा वर्चुअल होस्ट हैंडल करता है.

वर्चुअल होस्ट के लिए सैंपल कॉन्फ़िगरेशन नीचे दिया गया है:

vhost कॉन्फ़िगरेशन का सैंपल

एंटीपैटर्न

किसी संगठन या सभी संगठनों के एक ही या अलग-अलग एनवायरमेंट में, एक ही होस्ट उपनाम और पोर्ट नंबर वाले कई वर्चुअल होस्ट तय करने से, एपीआई अनुरोधों को रूट करते समय उलझन पैदा हो सकती है. साथ ही, इससे अनचाहे गड़बड़ियां/व्यवहार हो सकते हैं.

आइए, एक उदाहरण की मदद से यह बताएं कि एक ही होस्ट उपनाम के साथ एक से ज़्यादा वर्चुअल होस्ट होने के क्या नतीजे हैं.

मान लें कि एक ही होस्ट के उपनाम से दो वर्चुअल होस्ट 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 में गलत डेटा सेव हो जाता है, क्योंकि एपीआई अनुरोध दोनों वर्चुअल होस्ट को भेजे जाते हैं, जबकि असली अनुरोध सिर्फ़ एक वर्चुअल होस्ट पर भेजे जाते हैं.

इसका असर लॉग करने की जानकारी और वर्चुअल होस्ट पर आधारित दूसरे डेटा पर भी पड़ सकता है.

असर

  1. 404 कोड वाली गड़बड़ियां, क्योंकि एपीआई अनुरोध किसी ऐसे वर्चुअल होस्ट पर रूट किए जा सकते हैं जिस पर एपीआई प्रॉक्सी को अनुरोधों को स्वीकार करने के लिए कॉन्फ़िगर नहीं किया गया है.
  2. Analytics का गलत डेटा, क्योंकि एपीआई अनुरोध एक ही होस्ट उपनाम वाले सभी वर्चुअल होस्ट को भेजे जाते हैं. हालांकि, अनुरोध सिर्फ़ किसी खास वर्चुअल होस्ट के लिए किए जाते हैं.

सबसे सही तरीका

  • एक ही एनवायरमेंट या किसी संगठन के अलग-अलग एनवायरमेंट में, एक ही होस्ट उपनाम और पोर्ट नंबर वाले कई वर्चुअल होस्ट तय न करें.
  • अगर एक से ज़्यादा वर्चुअल होस्ट तय करने की ज़रूरत है, तो हर वर्चुअल होस्ट के लिए अलग-अलग होस्ट उपनाम इस्तेमाल करें, जैसा कि यहां दिखाया गया है:

    दो वीहोस्ट

इसके बारे में और पढ़ें