आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इस पेज पर जाएं
Apigee X दस्तावेज़. जानकारी
समस्या का ब्यौरा
क्लाइंट ऐप्लिकेशन को एपीआई कॉल के रिस्पॉन्स के तौर पर, Not
Found
मैसेज और गड़बड़ी के मैसेज Unable to identify proxy for host: VIRTUAL_HOST and
url: PATH
के साथ 404
का एचटीटीपी स्टेटस कोड मिलता है.
इस गड़बड़ी का मतलब है कि Edge को बताए गए वर्चुअल होस्ट और पाथ के लिए एपीआई प्रॉक्सी नहीं मिला.
गड़बड़ी का मैसेज
क्लाइंट ऐप्लिकेशन को यह रिस्पॉन्स कोड मिलता है:
HTTP/1.1 404 Not Found
इसके अलावा, आपको गड़बड़ी का ऐसा मैसेज भी दिख सकता है जो नीचे दिए गए मैसेज से मिलता-जुलता है:
{ "fault":{ "faultstring":"Unable to identify proxy for host: default and url: \/oauth2\/token", "detail":{ "errorcode":"messaging.adaptors.http.flow.ApplicationNotFound" } } }
संभावित कारण
वजह | ब्यौरा | इसके लिए लागू होने वाले, समस्या हल करने के निर्देश |
---|---|---|
डुप्लीकेट होस्ट उपनाम वाला वर्चुअल होस्ट | एक से ज़्यादा वर्चुअल होस्ट का होस्ट उपनाम और पोर्ट नंबर एक ही होता है. | Edge के सार्वजनिक और प्राइवेट क्लाउड उपयोगकर्ता |
गड़बड़ी की जांच करने के सामान्य तरीके
404
की गड़बड़ी को ठीक करने में, NGINX और मैसेज प्रोसेसर के लॉग से मदद मिलेगी.
लॉग देखने के लिए, यहां दिया गया तरीका अपनाएं:
- नीचे दिए गए निर्देश का इस्तेमाल करके NGINX लॉग देखें:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है - लॉग एंट्री में इन फ़ील्ड की जांच करें:
फ़ील्ड मान Upstream_status, status
404
X-Apigee-fault-code
messaging.adaptors.http.flow.ApplicationNotFound
लॉग में मौजूद मैसेज आईडी को नोट कर लें.
- मैसेज प्रोसेसर के लॉग देखना
(
/opt/apigee/var/log/edge-message-processor/logs/system.log)
देखें कि क्या किसी एपीआई के लिएmessaging.adaptors.http.flow.ApplicationNotFound
का इस्तेमाल करें या अगर आपके पास एपीआई अनुरोध के लिए, दूसरे चरण में भेजा गया मैसेज आईडी.मैसेज प्रोसेसर लॉग से, गड़बड़ी के मैसेज का सैंपल
NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - AbstractRequestListener.onException() : Request:POST, uri:/weather, message Id:null, exception:com.apigee.rest.framework.ResourceNotFoundException{ code = messaging.adaptors.http.flow.ApplicationNotFound, message = Unable to identify proxy for host: vh1 and url: /weather, associated contexts = []}, context:Context@342ea86b input=ClientInputChannel(SSLClientChannel[Accepted: Remote:10.123.123.123:8443 Local:10.135.33.68:62092]@1206954 useCount=1 bytesRead=0 bytesWritten=0 age=1ms lastIO=0ms isOpen=true)
ऊपर दिए गए लॉग में गड़बड़ी का कोड दिखता है और गड़बड़ी का मैसेज इस तरह का है:
code = messaging.adaptors.http.flow.ApplicationNotFound, message = Unable to identify proxy for host: vh1 and url: /weatherअभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
वजह: एक ही होस्ट उपनाम और पोर्ट नंबर वाले कई वर्चुअल होस्ट
Apigee Edge राऊटर और मैसेज प्रोसेसर, होस्ट हेडर, पोर्ट नंबर, और यूआरआई पाथ, दोनों का इस्तेमाल करते हैं
ताकि ट्रैफ़िक को सही एपीआई प्रॉक्सी पर भेजा जा सके. ऐसी परिभाषाएं जिनका मतलब साफ़ तौर पर न पता हो, जैसे कि एक से ज़्यादा वर्चुअल
एक ही होस्ट अन्य नाम वाले होस्ट और पोर्ट नंबर
एंटी-पैटर्न और
अनचाहे व्यवहार की वजह बन सकती है. आपको नज़र आने वाली एक सामान्य गड़बड़ी यह है कि
Unable to identify proxy for host: VIRTUAL_HOST
and url: PATH
मैसेज में 404
गड़बड़ी हुई.
आम तौर पर, अगर एक ही होस्ट उपनाम वाले कई वर्चुअल होस्ट मौजूद हैं, तो आपको
रुक-रुककर 404
गड़बड़ी. ऐसा इसलिए होता है, क्योंकि खास एपीआई प्रॉक्सी को कॉन्फ़िगर किया जा सकता है
ताकि किसी वर्चुअल होस्ट पर अनुरोध स्वीकार किए जा सकें. जब एपीआई अनुरोधों को
का इस्तेमाल करते हैं, तो आपको कामयाब रिस्पॉन्स मिलेगा.
हालांकि, जब एपीआई अनुरोधों को ऐसे दूसरे वर्चुअल होस्ट पर रूट किया जाता है जहां एपीआई प्रॉक्सी को भेजा जाता है
अनुरोध स्वीकार करने के लिए कॉन्फ़िगर नहीं किया गया है, तो इन 404
के साथ एपीआई काम नहीं करेंगे
गड़बड़ियां हैं.
इसमें दिए गए निर्देशों का पालन करें
404 होस्ट के लिए प्रॉक्सी की पहचान नहीं की जा सकी: <वर्चुअल होस्ट का नाम> और यूआरएल: <path> और
इस गड़बड़ी को ठीक करें. अगर यह गड़बड़ी किसी और वजह से नहीं हो रही है, तो यह तरीका अपनाएं
नीचे दिया गया है ताकि यह पता लगाया जा सके कि डुप्लीकेट होस्ट उपनाम वाले वर्चुअल होस्ट की वजह से 404
तो नहीं हो रहा
गड़बड़ियां हैं.
संक्रमण की जांच
नीचे दिए गए तरीकों में से किसी एक का इस्तेमाल करके पता लगाएं कि क्या ऐसे कई वर्चुअल होस्ट हैं जिनके पास
वही होस्ट उपनाम/पोर्ट #, जिसकी वजह से 404
गड़बड़ियां हुईं:
- Edge यूज़र इंटरफ़ेस (यूआई)
- मैनेजमेंट एपीआई
Edge यूज़र इंटरफ़ेस (यूआई)
इन निर्देशों का इस्तेमाल करके यह पता लगाएं कि एक ही होस्ट के पास कई वर्चुअल होस्ट हैं या नहीं Edge यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके उपनाम/पोर्ट #.
उदाहरण के लिए, अगर आपको यूआरएल में 404
गड़बड़ी दिखी है
http://example.com:9001/proxy1
है, तो आपको यह देखना होगा कि कौनसे वर्चुअल होस्ट के पास
होस्ट का उपनाम example.com
और पोर्ट 9001
.
- सार्वजनिक क्लाउड और प्राइवेट क्लाउड पर नए Edge के यूज़र इंटरफ़ेस (यूआई) में:
- व्यवस्थापक चुनें.
- वर्चुअल होस्ट चुनें.
- हर परिवेश के लिए वर्चुअल को तय करने के लिए खोज फ़िल्टर का इस्तेमाल करें ऐसे होस्ट जो उस खास होस्ट उपनाम से मेल खाते हैं जिससे एपीआई अनुरोधों को स्वीकार किया गया.
- अगर आपको एक ही होस्ट अन्य नाम का इस्तेमाल करने वाले कई वर्चुअल होस्ट मिलते हैं, तो इस पर जाएं इस समस्या को हल करने के लिए, समाधान.
उदाहरण के लिए:
- प्राइवेट क्लाउड पर क्लासिक यूज़र इंटरफ़ेस (यूआई) में:
- एपीआई टैब चुनें.
- एनवायरमेंट कॉन्फ़िगरेशन चुनें.
- वर्चुअल होस्ट चुनें.
- हर परिवेश के लिए वर्चुअल होस्ट की सूची देखें और पता लगाएं कि कोई मिलता-जुलता है या नहीं वह खास होस्ट उपनाम जिससे एपीआई अनुरोधों को शुरू किया गया था.
- अगर आपको एक जैसे होस्ट उपनाम से मेल खाने वाले कई वर्चुअल होस्ट मिलते हैं, तो इस पर जाएं इस समस्या को हल करने के लिए, समाधान.
उदाहरण के लिए:
मैनेजमेंट एपीआई
इन निर्देशों का इस्तेमाल करके यह पता लगाएं कि एक ही होस्ट के पास कई वर्चुअल होस्ट हैं या नहीं मैनेजमेंट एपीआई का इस्तेमाल करके, उपनाम/पोर्ट #.
अपने हर एनवायरमेंट में हर वर्चुअल होस्ट की परिभाषा पाएं संगठन देख सकते हैं कि किन वर्चुअल होस्ट के पास एक ही होस्ट उपनाम और पोर्ट नंबर है:
उदाहरण के लिए, अगर आपको यूआरएल में
404
गड़बड़ी दिखी हैhttp://example.com:9001/proxy1
, तो आपको वह वर्चुअल होस्ट के पास होस्ट का उपनामexample.com
और पोर्ट9001
होता है.एनवायरमेंट की सूची पाना
सार्वजनिक क्लाउड उपयोगकर्ता:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments -u USERNAME
निजी Cloud उपयोगकर्ता:
curl -v -X GET http://MANAGEMENT_HOST:PORT#/v1/organizations/ORGANIZATION_NAME/environments -u USERNAME
कहां:
ORGANIZATION_NAME, संगठन का नाम है
उदाहरण:
curl http://127.0.0.1:8080/v1/organizations/myorg/environments -u USERNAME
[ "prod", "test", "dev" ]
किसी एनवायरमेंट में वर्चुअल होस्ट की सूची पाएं
सार्वजनिक क्लाउड उपयोगकर्ता:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/virtualhosts -u USERNAME
निजी Cloud उपयोगकर्ता:
curl -v -X GET http://MANAGEMENT_HOST:PORT#/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/virtualhosts -u USERNAME
कहां:
ORGANIZATION_NAME, संगठन का नाम है
ENVIRONMENT_NAME एनवायरमेंट का नाम है
उदाहरण:
curl http://127.0.0.1:8080/v1/organizations/myorg/environments/test/virtualhosts -u USERNAME
[ "default" ]
एनवायरमेंट में मौजूद हर वर्चुअल होस्ट की परिभाषा पाएं.
सार्वजनिक क्लाउड उपयोगकर्ता:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/virtualhosts/VIRTUAL_HOST_NAME -u USERNAME
निजी Cloud उपयोगकर्ता:
curl -v -X GET http://MANAGEMENT_HOST:PORT#/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/virtualhosts/VIRTUAL_HOST_NAME -u USERNAME
कहां:
ORGANIZATION_NAME, संगठन का नाम है
ENVIRONMENT_NAME एनवायरमेंट का नाम है
VIRTUAL_HOST_NAME, वर्चुअल होस्ट का नाम है
उदाहरण:
curl http://127.0.0.1:8080/v1/organizations/myorg/environments/test/virtualhosts/default -u USERNAME
{ "hostAliases" : [ "example.com" ], "interfaces" : [ ], "listenOptions" : [ ], "name" : "default", "port" : "9001", "retryOptions" : [ ] }
अपने संगठन के अन्य एनवायरमेंट के लिए ऊपर दिए गए दो चरण दोहराएं.
इस उदाहरण में,
dev
एनवायरमेंट के लिए दिए गए चरण दोहराएं:curl http://127.0.0.1:8080/v1/organizations/myorg/environments/dev/virtualhosts -u USERNAME
[ "default" ]
curl http://127.0.0.1:8080/v1/organizations/myorg/environments/dev/virtualhosts/default -u USERNAME
{ "hostAliases" : [ "example.com" ], "interfaces" : [ ], "listenOptions" : [ ], "name" : "default", "port" : "9001", "retryOptions" : [ ] }
इस उदाहरण में देखा जा सकता है कि दो वर्चुअल होस्ट
default
दो अलग-अलग एनवायरमेंट में,test
औरdev
, दोनों में एक ही होस्ट का उपनामexample.com
और पोर्ट नंबर शामिल है9001
. इस वजह से404
गड़बड़ियां होती हैं.- अगर आपको एक जैसे होस्ट उपनाम से मेल खाने वाले कई वर्चुअल होस्ट मिलते हैं, तो इस पर जाएं इस समस्या को हल करने के लिए, समाधान.
रिज़ॉल्यूशन
- पक्का करें कि हर वर्चुअल होस्ट में सिर्फ़ यूनीक होस्ट उपनाम और पोर्ट कॉम्बिनेशन शामिल हों.
- अगर आपने एक ही होस्ट उपनाम और पोर्ट के कॉम्बिनेशन वाले कई वर्चुअल होस्ट की पहचान कर ली है तो आपको इन्हें किसी खास होस्ट उपनाम से अपडेट करना होगा.
- इन्हें Edge के यूज़र इंटरफ़ेस (यूआई) या मैनेजमेंट एपीआई का इस्तेमाल करके अपडेट किया जा सकता है. इसके लिए, निर्देश देखे जा सकते हैं से कम वर्चुअल होस्ट में बदलाव करना.
- पक्का करें कि हर होस्ट के उपनाम में सही डीएनएस एंट्री हो.
- ऊपर बताए गए उदाहरण में, अगर हमारा कॉन्फ़िगरेशन ऐसा दिखता है:
curl -X GET http://localhost:8080/v1/organizations/myorg/environments -u user
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है[ "prod", "test", "dev" ]
curl -X GET http://localhost:8080/v1/organizations/myorg/environments/test/virtualhosts/default -u user
{ "hostAliases" : [ "example.com" ], "interfaces" : [ ], "listenOptions" : [ ], "name" : "default", "port" : "9001", "retryOptions" : [ ] }
curl -X GET http://localhost:8080/v1/organizations/myorg/environments/dev/virtualhosts/default -u user
{ "hostAliases" : [ "example.com" ], "interfaces" : [ ], "listenOptions" : [ ], "name" : "default", "port" : "9001", "retryOptions" : [ ] }
- आप गलत वर्चुअल होस्ट को इस प्रकार अपडेट कर सकते हैं कि वे ओवरलैप न हों.
- इसका मतलब है कि होस्ट के उपनाम को
example2.com
के तौर पर अपडेट करें. - पक्का करें कि नए होस्ट के उपनाम की डीएनएस एंट्री, पिछले होस्ट के उपनाम से मेल खाती हो.
curl -X GET http://localhost:8080/v1/organizations/myorg/environments/dev/virtualhosts/default -u user -H 'Content-Type: application/json' -d '{ "hostAliases" : [ "example2.com" ], "interfaces" : [ ], "listenOptions" : [ ], "name" : "default", "port" : "9001", "retryOptions" : [ ] }' -i
HTTP/1.1 200 OK Date: Tue, 02 Feb 2021 20:54:29 GMT Content-Type: application/json X-Apigee.user: user X-Apigee.organization: myorg X-Apigee.environment: dev X-Apigee.backends: management-server Date: Tue, 02 Feb 2021 20:54:29 GMT Content-Length: 152 { "hostAliases" : [ "example2.com" ], "interfaces" : [ ], "listenOptions" : [ ], "name" : "default", "port" : "9001", "retryOptions" : [ ] }
- प्रॉक्सी को फिर से एपीआई कॉल करें और पुष्टि करें कि आपको लगातार सही जवाब मिल रहे हैं:
curl http://example.com:9001/proxy1
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है{ "slideshow": { "author": "Yours Truly", "date": "date of publication", "slides": [ { "title": "Wake up to WonderWidgets!", "type:": "all" }, { "items": [ "Why WonderWidgets are great", "Who buys WonderWidgets" ], "title": "Overview", "type": "all" } ], "title": "Sample Slide Show" } }
- अगर समस्या अब भी बनी रहती है, तो गड़बड़ी की जानकारी इकट्ठा करना ज़रूरी है पर जाएं.
ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी जानकारी इकट्ठा करना ज़रूरी है
अगर ऊपर दिए गए निर्देशों का पालन करने के बाद भी समस्या बनी रहती है, तो यह जानकारी इकट्ठा करें और फिर Apigee Edge सहायता से संपर्क करें:
अगर आप सार्वजनिक क्लाउड के उपयोगकर्ता हैं, तो यह जानकारी दें:
- संगठन का नाम
- परिवेश का नाम
- एपीआई प्रॉक्सी का नाम
404
गड़बड़ी को ठीक करने के लिए,curl
निर्देश को पूरा करें- अगर
404
गड़बड़ियां अभी नहीं हो रही हैं, तो समयावधि बताएं इस सूची में, टाइमज़ोन की जानकारी शामिल करें. ऐसा तब करें, जब पिछली बार404
गड़बड़ियां हुई थीं.
अगर आप निजी Cloud उपयोगकर्ता हैं, तो यह जानकारी दें:
- पूरे न हो पाने वाले अनुरोधों की वजह से, गड़बड़ी का पूरा मैसेज मिला
- संगठन, एनवायरमेंट का नाम, और एपीआई प्रॉक्सी का नाम जिसके लिए आपको निगरानी की जा रही है
404
गड़बड़ियां - एपीआई प्रॉक्सी बंडल
- NGINX ऐक्सेस लॉग
/opt/apigee/var/log/edge-router/nginx/ORGANIZATION_NAME~ENVIRONMENT_NAME.PORT#_access_log
- मैसेज प्रोसेसर के लॉग
/opt/apigee/var/log/edge-message-processor/logs/system.log
404
गड़बड़ी होने के समय, टाइमज़ोन की जानकारी वाली समयावधि