503 सेवा उपलब्ध नहीं है - 403 के साथ प्रॉक्सी टनल नहीं बन सका

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

समस्या का ब्यौरा

क्लाइंट ऐप्लिकेशन को503 Service Unavailable एपीआई कॉल के रिस्पॉन्स के तौर पर गड़बड़ी कोड protocol.http.ProxyTunnelCreationFailed.

गड़बड़ी का मैसेज

क्लाइंट ऐप्लिकेशन को यह रिस्पॉन्स कोड मिलता है:

HTTP/1.1 503 Service Unavailable

इसके अलावा, आपको गड़बड़ी का यह मैसेज भी दिख सकता है:

{
   "fault":{
      "faultstring":"Proxy refused to create tunnel with response status 403",
      "detail":{
         "errorcode":"protocol.http.ProxyTunnelCreationFailed"
      }
   }
}

फ़ॉरवर्ड प्रॉक्सी और टनलिंग

Apigee Edge, आपके एपीआई प्रॉक्सी को प्रॉक्सी सर्वर से आपके बैकएंड सर्वर के साथ इंटरैक्ट करने की अनुमति देता है जैसा कि यहां बताया गया है फ़ॉरवर्ड प्रॉक्सी कॉन्फ़िगर करें. प्रॉक्सी सर्वर किसी सुरक्षित (एचटीटीपीएस) या असुरक्षित को खोलता है प्रॉक्सी टाइप (को ध्यान में रखकर, बैकएंड सर्वर से (एचटीटीपी) कनेक्शन दिखाया जाता है प्रॉपर्टी HTTPClient.proxy.type) का इस्तेमाल करके, डेटा को ट्रांसफ़र करती है दोनों ही दिशाओं में. इसे टनलिंग के नाम से जाना जाता है.

डिफ़ॉल्ट रूप से, Apigee Edge, पूरे ट्रैफ़िक के लिए टनलिंग का इस्तेमाल करता है. टनलिंग को बंद करने के लिए, प्रॉपर्टी HTTPClient.use.tunneling को false पर सेट करना ज़रूरी है.

गड़बड़ी का कोड: प्रोटोकॉल.http.प्रॉक्सीTunnelCreationFailed

Apigee Edge, गड़बड़ी का कोड protocol.http.ProxyTunnelCreationFailed दिखाता है, अगर किसी वजह से, प्रॉक्सी सर्वर Apigee Edge और बैकएंड सर्वर के बीच टनल नहीं बना सकता फ़ायरवॉल, एसीएल (ऐक्सेस कंट्रोल लिस्ट) से जुड़ी पाबंदियां, डीएनएस से जुड़ी समस्याएं, बैकएंड सर्वर अनुपलब्धता, टाइम आउट वगैरह

आम तौर पर, Apigee Edge से मिलने वाले जवाब के faultstring में मौजूद स्टेटस कोड यह गड़बड़ी की संभावित वजह को दिखाता है.

गलत स्ट्रिंग टेंप्लेट:

Proxy refused to create tunnel with response status STATUS_CODE

गड़बड़ी वाले स्ट्रिंग में कुछ स्टेटस कोड दिखने की ये वजहें हो सकती हैं:

यहां दी गई टेबल में, स्टेटस कोड के आधार पर संभावित वजहों के बारे में बताया गया है faultstring:

फ़ॉल्टस्ट्रिंग ब्यौरा
प्रॉक्सी ने जवाब की स्थिति 403 के साथ टनल बनाने से मना कर दिया

403 - Forbidden

ऐसा हो सकता है कि फ़ायरवॉल या ACL पाबंदियों के कारण बैकएंड सर्वर, जो टनल बनाने से रोकता है.

प्रॉक्सी ने जवाब की स्थिति 503 के साथ टनल बनाने से मना कर दिया

503 - Service Unavailable

ऐसा डीएनएस की समस्याओं, फ़ायरवॉल की पाबंदियों, और बैकएंड सर्वर की टनल बनाने की सुविधा का उपलब्ध न होना

प्रॉक्सी ने रिस्पॉन्स स्टेटस 504 के साथ टनल बनाने से मना कर दिया

504 - Gateway Timeout

ऐसा तब हो सकता है, जब टनल बनाने के दौरान टाइम आउट हो जाएं

faultstring में दिख रहे स्टेटस कोड के आधार पर, आपको का इस्तेमाल करना चाहिए. इस प्लेबुक में समस्या हल करने का तरीका बताया गया है अगर आपको faultstring में स्टेटस कोड 403 दिख रहा है, तो यह समस्या है गड़बड़ी कोड protocol.http.ProxyTunnelCreationFailed के लिए.

संभावित कारण

यह गड़बड़ी (स्टेटस कोड 403) तब होती है, जब कोई फ़ायरवॉल या ACL (ऐक्सेस) हो (कंट्रोल लिस्ट) बैकएंड सर्वर पर कॉन्फ़िगर की गई पाबंदियां, जो टनल को इसे Apigee Edge और प्रॉक्सी सर्वर के बैकएंड सर्वर के बीच बनाया जाता है.

वजह ब्यौरा इसके लिए लागू होने वाले, समस्या हल करने के निर्देश
प्रॉक्सी ने रिस्पॉन्स स्टेटस 403 के साथ टनल बनाने से मना कर दिया प्रॉक्सी सर्वर, टनल बनाने से इनकार कर देता है, क्योंकि उसे प्रॉक्सी सर्वर होस्ट नाम मिलता है Host हेडर में बैकएंड सर्वर होस्ट के नाम के बजाय, सिर्फ़ Edge प्राइवेट क्लाउड के उपयोगकर्ता

गड़बड़ी की जांच करने के सामान्य तरीके

इस गड़बड़ी का पता लगाने के लिए, इनमें से किसी एक टूल/तकनीक का इस्तेमाल करें:

ट्रेस करने वाला टूल

ट्रेस टूल का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:

  1. ट्रेस सेशन चालू करना और इनमें से कोई एक:
    • गड़बड़ी आने तक इंतज़ार करें, या
    • अगर आपको समस्या के बारे में अच्छे से पता है, तो समस्या के बारे में बताने के लिए एपीआई कॉल करें 503 Service Unavailable Proxy refused to create tunnel with response status 403 के साथ.
  2. पक्का करें कि सभी FlowInfos दिखाएं चालू है:

  3. पूरे न हो पाने वाले अनुरोधों में से किसी एक को चुनें और ट्रेस की जांच करें.
  4. ट्रेस के अलग-अलग फ़ेज़ पर नेविगेट करें और गड़बड़ी का पता लगाएं हुआ.
  5. गड़बड़ी आम तौर पर टारगेट अनुरोध फ़्लो शुरू होने वाले चरण के बाद दिखेगी जैसा कि नीचे दिखाया गया है:

    यहां दी गई जानकारी का ध्यान रखें:

    गड़बड़ी: Proxy refused to create tunnel with response status 403

  6. ट्रेस में AX (Analytics डेटा रिकॉर्ड किया गया) चरण पर जाएं और उस पर क्लिक करें.
  7. नीचे की ओर स्क्रोल करके, चरण की जानकारी जवाब के हेडर सेक्शन पर जाएं और X-Apigee-fault-code और X-Apigee-fault-source की वैल्यू इस तरह तय करें नीचे दी गई जानकारी देखें:

    ( बड़ी इमेज देखें)

    ( बड़ी इमेज देखें)

  8. आपको X-Apigee-fault-code और X-Apigee-fault-source की वैल्यू दिखेगी के तौर पर protocol.http.ProxyTunnelCreationFailed और target के तौर पर दिखाता है कि यह गड़बड़ी प्रॉक्सी टनल की वजह से हुई है बनाना विफल रहा क्योंकि अपेक्षित होस्ट हेडर नहीं मिला.

    रिस्पॉन्स हेडर मान
    X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailed
    X-Apigee-fault-source target

NGINX

NGINX ऐक्सेस लॉग का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:

  1. अगर आप निजी Cloud उपयोगकर्ता हैं, तो NGINX ऐक्सेस लॉग का इस्तेमाल इन कामों के लिए किया जा सकता है एचटीटीपी 503 Service Unavailable के बारे में मुख्य जानकारी पता करें गड़बड़ियां हैं.
  2. NGINX ऐक्सेस लॉग देखें:

    /opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log

    कहां: ORG, ORG, और PORT# को असल वैल्यू से बदल दिया जाता है.

  3. यह देखने के लिए खोजें कि क्या गड़बड़ी कोड में कोई 503 गड़बड़ी है किसी खास अवधि के दौरान protocol.http.ProxyTunnelCreationFailed (अगर समस्या पिछली बार हुई है) या अगर कोई अनुरोध अब भी पूरा नहीं हो पा रहा है 503.
  4. अगर आपको X-Apigee-fault-code में कोई 503 गड़बड़ी मिलती है की वैल्यू, protocol.http.ProxyTunnelCreationFailed से मेल खा रही हो, इसके बाद, X-Apigee-fault-source. की वैल्यू तय करें.

    NGINX ऐक्सेस लॉग में 503 गड़बड़ी का नमूना:

    NGINX ऐक्सेस लॉग की ऊपर दी गई सैंपल एंट्री में X- के लिए नीचे दिए गए मान हैं Apigee-fault-code और X-Apigee-fault-source:

    रिस्पॉन्स हेडर मान
    X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailed
    X-Apigee-fault-source target

वजह: प्रॉक्सी ने रिस्पॉन्स स्टेटस 403 के साथ टनल बनाने से मना कर दिया

संक्रमण की जांच

  1. यहां बताए गए तरीके से ट्रेस टूल या NGINX ऐक्सेस लॉग का इस्तेमाल करके, 503 Service Unavailable के लिए गलत कोड और गलत सोर्स का पता लगाएं डाइग्नोस्टिक्स के सामान्य तरीके.
  2. गड़बड़ी का मैसेज देखें और स्टेटस कोड तय करें सुरंग के निर्माण में विफल होने के लिए faultstring में बताया गया.
  3. इस स्थिति में, स्टेटस कोड 403 है, जिसका मतलब है अनुमति नहीं है.
  4. इसका मतलब है कि टनल बनाने के लिए आपके पास ज़रूरी अधिकार या खास अधिकार नहीं हैं. यह काम कर सका आम तौर पर, ऐसा तब होता है, जब फ़ायरवॉल या एसीएल (ऐक्सेस कंट्रोल लिस्ट) की पाबंदियां ऐसी हों ऐसा करने से, टनल नहीं बनता.
  5. अपने बैकएंड सर्वर पर कॉन्फ़िगर किए गए ऐसे किसी भी फ़ायरवॉल और/या ACL प्रतिबंधों की समीक्षा करें टनल बनाने से रोक सकता है.
  6. फ़ायरवॉल और/या ACL पाबंदियों के आधार पर, आपको समस्या ठीक करनी होगी सही तरीके से काम करना चाहिए.
  7. आइए, इस समस्या को हल करने और इसे ठीक करने का तरीका बताने के लिए, फ़ायरवॉल से जुड़ी पाबंदी का उदाहरण लेते हैं समस्या:

    स्थिति: बैकएंड सर्वर पर फ़ायरवॉल की पाबंदी के लिए, होस्ट हेडर को हमेशा ऐसा होना चाहिए इसमें बैकएंड सर्वर होस्ट का नाम शामिल है

    Apigee Edge से पास किया गया होस्ट हेडर पता करने के लिए, इनमें से किसी एक तरीके का इस्तेमाल करें:

    ट्रेस

    ट्रेस का इस्तेमाल करके होस्ट हेडर तय करने के लिए:

    1. पक्का करें कि faultstring में Proxy refused to create tunnel with response status 403 है. ट्रेस का इस्तेमाल करने के बारे में यहां बताया गया है गड़बड़ी की जानकारी पाने के सामान्य तरीके.
    2. टारगेट अनुरोध का फ़्लो शुरू हुआ चरण पर जाएं और अनुरोध के हेडर
    3. होस्ट हेडर में दिए गए होस्ट नाम की वैल्यू की पुष्टि करें अनुरोध हेडर सेक्शन.
    4. अगर होस्ट हेडर में प्रॉक्सी होस्ट नाम है, तो इस गड़बड़ी की वजह.
    5. ऐसा इसलिए होता है क्योंकि बैकएंड सर्वर पर फ़ायरवॉल कॉन्फ़िगर किया जाता है, ताकि सिर्फ़ तब अनुरोध करता है, जब होस्ट हेडर में बैकएंड सर्वर का नाम शामिल हो.
    6. इसलिए, जब प्रॉक्सी सर्वर, बैकएंड सर्वर के साथ टनल बनाने की कोशिश करता है, तो गड़बड़ी के साथ काम नहीं करता

      Proxy refused to create tunnel with response status 403.

      होस्ट हेडर दिखाने वाला सैंपल ट्रेस, जिसमें प्रॉक्सी होस्ट का नाम शामिल है

      ( बड़ी इमेज देखें)

      ऊपर दिखाए गए सैंपल ट्रेस में, यह पता चलता है कि Host Header में यह शामिल है प्रॉक्सी होस्ट का नाम www.proxyserver.com. क्योंकि बैकएंड सर्वर पर एक फ़ायरवॉल प्रतिबंध कॉन्फ़िगर किया गया है, जो केवल बैकएंड सर्वर होस्ट का नाम होस्ट हेडर में शामिल होना चाहिए, तो आपको गड़बड़ी Proxy refused to create tunnel with response status 403.

    tcpdump

    tcpdump का इस्तेमाल करके होस्ट हेडर तय करने के लिए

    1. यहां से आने वाले अनुरोधों के लिए, प्रॉक्सी सर्वर पर tcpdump को कैप्चर करें Apigee Edge का मैसेज प्रोसेसर कॉम्पोनेंट, जिसके लिए यह निर्देश दिया गया है:

      tcpdump -i any -s 0 host MP_IP_ADDRESS -w FILE_NAME
      

      tcpdump कमांड का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, इसे देखें tcpdump.

    2. tcpdump के डेटा का विश्लेषण करने के लिए, Wireshark टूल या इससे मिलता-जुलता टूल टूल.
    3. यहाँ इसका सैंपल विश्लेषण दिया गया है: Wireshark का इस्तेमाल करके tcpdump:

      ( बड़ी इमेज देखें)

    4. पैकेट नंबर 13, 14, और 15 से पता चलता है कि प्रोसेसर, तीन-तरफ़ा टीसीपी के ज़रिए प्रॉक्सी सर्वर से कनेक्शन बना रहा है हैंडशेक प्रोसेस करते हैं.
    5. पैकेट 16 में, मैसेज प्रोसेसर को प्रॉक्सी होस्ट से कनेक्ट किया गया है httpbin.org (ऊपर दिए गए उदाहरण में दिखाया गया है).
    6. पैकेट 16 को चुनें और पैकेट के कॉन्टेंट को ध्यान से देखें और खास तौर पर, मैसेज से प्रॉक्सी सर्वर को होस्ट हेडर भेजा जा रहा है प्रोसेसर.

    7. ऊपर दिया गया नमूना होस्ट हेडर httpin.org दिखाता है, जो प्रॉक्सी सर्वर का होस्टनेम है. इसलिए, जब प्रॉक्सी सर्वर ऊपर दिए गए होस्ट हेडर को पास करके, बैकएंड सर्वर के साथ टनल बनाएं httpin.org, Proxy refused to create tunnel with response status 403 गड़बड़ी की वजह से यह कार्रवाई नहीं की जा सकी.

रिज़ॉल्यूशन

स्थिति: प्रॉक्सी सर्वर पर फ़ायरवॉल प्रतिबंध की उम्मीद होस्ट हेडर को बैकएंड सर्वर होस्टनेम हमेशा शामिल होना चाहिए

अगर आपको पता है कि यह गड़बड़ी बैकएंड सर्वर पर फ़ायरवॉल की वजह से हुई है, तो इस तरह से कॉन्फ़िगर किया गया है कि होस्ट हेडर में हमेशा बैकएंड सर्वर शामिल होना चाहिए होस्ट नाम, जबकि संदेश प्रोसेसर प्रॉक्सी सर्वर होस्टनाम भेज रहा है, फिर समस्या हल करने के लिए, यहां दिया गया तरीका अपनाएं:

  1. इसमें use.proxy.host.header.with.target.uri प्रॉपर्टी को 'सही है' पर सेट करें TargetEndpoint, जैसा कि इस उदाहरण में दिखाया गया है:

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

    <TargetEndpoint name="default">
      <HTTPTargetConnection>
        <URL>https://mocktarget.apigee.net/json</URL>
        <Properties>
          <Property name="use.proxy.host.header.with.target.uri">true</Property>
        </Properties>
      </HTTPTargetConnection>
    </TargetEndpoint>
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  2. पक्का करें कि जो दूसरी प्रॉपर्टी फ़ॉरवर्ड प्रॉक्सी को मैसेज प्रोसेसर पर इस तरह कॉन्फ़िगर किया जाता है:

    1. हर मैसेज प्रोसेसर पर /opt/apigee/customer/application/message-processor.properties फ़ाइल की समीक्षा करें.
    2. पक्का करें कि नीचे दी गई प्रॉपर्टी, आपके इस्तेमाल के उदाहरण या ज़रूरी शर्तों के हिसाब से सेट की गई हों:

      प्रॉपर्टी के लिए सैंपल वैल्यू:

      conf_http_HTTPClient.use.proxy=true
      conf/http.properties+HTTPClient.proxy.type=HTTP
      conf/http.properties+HTTPClient.proxy.host=PROXY_SERVER_HOST_NAME
      conf/http.properties+HTTPClient.proxy.port=PORT_#
      conf/http.properties+HTTPClient.proxy.user=USERNAME
      conf/http.properties+HTTPClient.proxy.password=PASSWORD
      
      अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी जानकारी इकट्ठा करना ज़रूरी है

अगर ऊपर दिए गए निर्देशों का पालन करने के बाद भी समस्या बनी रहती है, तो यह जानकारी इकट्ठा करें और फिर Apigee Edge सहायता से संपर्क करें:

अगर आप निजी Cloud उपयोगकर्ता हैं, तो यह जानकारी दें:

  • पूरे न हो पाने वाले अनुरोधों की वजह से, गड़बड़ी का पूरा मैसेज मिला
  • परिवेश का नाम
  • एपीआई प्रॉक्सी बंडल
  • एपीआई अनुरोधों के लिए फ़ाइल ट्रेस करें
  • NGINX ऐक्सेस लॉग

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    कहां: ORG, ENV, और PORT# को असल वैल्यू से बदल दिया जाता है.

  • मैसेज प्रोसेसर के सिस्टम लॉग

    /opt/apigee/var/log/edge-message-processor/logs/system.log
    

रेफ़रंस