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

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

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

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

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

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

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

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

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

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

एंटीपैटर्न

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

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

ध्यान दें कि दो वर्चुअल होस्ट sandbox and secure तय किए गए हैं एक ही होस्ट एलियास का इस्तेमाल करें, जैसे कि एनवायरमेंट में api.company.abc.com:

एक जैसे उपनाम वाले vhost

ऊपर दिए गए सेटअप के साथ, दो स्थितियां हो सकती हैं, जैसा कि नीचे दिए गए सेक्शन में बताया गया है.

स्थिति 1 : एपीआई प्रॉक्सी को किसी एक वर्चुअल के लिए अनुरोध स्वीकार करने के लिए कॉन्फ़िगर किया गया है सैंडबॉक्स होस्ट करता है

<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 वर्चुअल होस्ट.

स्थिति 2 : एपीआई प्रॉक्सी को, वर्चुअल होस्ट के सैंडबॉक्स और सुरक्षित, दोनों तरह के अनुरोधों को स्वीकार करने के लिए कॉन्फ़िगर किया जाता है

<ProxyEndpoint name="default">
  ...
  <HTTPProxyConnection>
    <BasePath>/demo</BasePath>
    <VirtualHost>sandbox</VirtualHost>
    <VirtualHost>secure</VirtualHost>
  </HTTPProxyConnection>
  ...
</ProxyEndpoint>

इस स्थिति में, जब क्लाइंट ऐप्लिकेशन होस्ट का उपनाम api.company.abc.com है, तो उन्हें प्रॉक्सी लॉजिक के आधार पर मान्य जवाब मिलेगा.

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

इसका असर, लॉग करने की जानकारी के साथ-साथ वर्चुअल होस्ट पर आधारित अन्य डेटा पर भी हो सकता है.

असर

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

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

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

    दो वीहोस्ट

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