আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
লক্ষণ
এপিআই কলগুলোর প্রতিক্রিয়া হিসেবে ক্লায়েন্ট অ্যাপ্লিকেশনটি একটি 404 এইচটিটিপি স্ট্যাটাস কোড, ' Not Found বার্তা এবং Unable to identify proxy for host: VIRTUAL_HOST and url: PATH ত্রুটি বার্তা পায়।
এই ত্রুটির অর্থ হলো, 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"
}
}
}সম্ভাব্য কারণসমূহ
| কারণ | বর্ণনা | সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য |
|---|---|---|
| ডুপ্লিকেট হোস্ট অ্যালিয়াস সহ ভার্চুয়াল হোস্ট | একাধিক ভার্চুয়াল হোস্টের একই হোস্ট অ্যালিয়াস এবং পোর্ট নম্বর রয়েছে। | এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা |
সাধারণ রোগ নির্ণয়ের পদক্ষেপ
404 এরর ট্রাবলশুটিং-এর জন্য NGINX এবং Message Processor লগগুলো সহায়ক হবে। লগগুলো চেক করতে নিচের ধাপগুলো অনুসরণ করুন:
- নিম্নলিখিত কমান্ডটি ব্যবহার করে NGINX লগগুলি দেখুন:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- লগ এন্ট্রিগুলিতে নিম্নলিখিত ক্ষেত্রগুলি যাচাই করুন:
মাঠ মূল্য Upstream_status, status404X-Apigee-fault-codemessaging.adaptors.http.flow.ApplicationNotFoundলগ থেকে মেসেজ আইডিটি লিখে রাখুন।
- নির্দিষ্ট API-টির জন্য আপনার
messaging.adaptors.http.flow.ApplicationNotFoundআছে কিনা, অথবা API অনুরোধটির জন্য আপনার কাছে ধাপ ২ থেকে পাওয়া অনন্য মেসেজ আইডিটি আছে কিনা, তা দেখতে মেসেজ প্রসেসর লগ (/opt/apigee/var/log/edge-message-processor/logs/system.log)পরীক্ষা করুন।মেসেজ প্রসেসর লগ থেকে প্রাপ্ত ত্রুটি বার্তার নমুনা
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 Routers এবং Message Processors সঠিক API প্রক্সিতে ট্র্যাফিক রাউট করার জন্য হোস্ট হেডার, পোর্ট নম্বর এবং URI পাথ—এই তিনটিই ব্যবহার করে। একই হোস্ট অ্যালিয়াস এবং পোর্ট নম্বর সহ একাধিক ভার্চুয়াল হোস্টের মতো অস্পষ্ট সংজ্ঞা থাকা একটি নথিভুক্ত অ্যান্টি-প্যাটার্ন এবং এর ফলে অপ্রত্যাশিত আচরণ দেখা দিতে পারে। আপনি যে সাধারণ ত্রুটিগুলো লক্ষ্য করবেন তার মধ্যে একটি হলো 404 ত্রুটি, যার সাথে Unable to identify proxy for host: VIRTUAL_HOST and url: PATH বার্তাটি থাকে।
সাধারণত যদি একই হোস্ট অ্যালিয়াস সহ একাধিক ভার্চুয়াল হোস্ট থাকে, তাহলে আপনি মাঝে মাঝে 404 ত্রুটি দেখতে পাবেন। এর কারণ হলো, নির্দিষ্ট এপিআই প্রক্সিটি শুধুমাত্র একটি ভার্চুয়াল হোস্টে অনুরোধ গ্রহণ করার জন্য কনফিগার করা থাকতে পারে। যখন এপিআই অনুরোধগুলি এপিআই প্রক্সিতে কনফিগার করা নির্দিষ্ট ভার্চুয়াল হোস্টে পাঠানো হয়, তখন আপনি একটি সফল প্রতিক্রিয়া পাবেন। কিন্তু, যখন এপিআই অনুরোধগুলি অন্য ভার্চুয়াল হোস্টগুলিতে পাঠানো হয়, যেগুলিতে এপিআই প্রক্সি অনুরোধ গ্রহণ করার জন্য কনফিগার করা নেই, তখন এপিআইগুলি এই 404 ত্রুটির সাথে ব্যর্থ হবে।
"404 Unable to identify proxy for host: <virtual host name> and url: <path>"- এ দেওয়া নির্দেশাবলী অনুসরণ করুন এবং এই ত্রুটিটি সমাধান করুন। যদি কোনো কারণই এই ত্রুটির জন্য দায়ী না হয়, তাহলে ডুপ্লিকেট হোস্ট অ্যালিয়াসযুক্ত ভার্চুয়াল হোস্টগুলি 404 ত্রুটির কারণ হচ্ছে কিনা তা নির্ধারণ করতে নীচের ধাপগুলি ব্যবহার করুন।
রোগ নির্ণয়
একই হোস্ট অ্যালিয়াস/পোর্ট থাকার কারণে 404 ত্রুটি হচ্ছে কিনা, তা নির্ধারণ করতে নিম্নলিখিত পদ্ধতিগুলোর মধ্যে একটি ব্যবহার করুন:
- এজ ইউআই
- ব্যবস্থাপনা এপিআই
এজ ইউআই
Edge UI ব্যবহার করে একই হোস্ট অ্যালিয়াস/পোর্ট নম্বরযুক্ত একাধিক ভার্চুয়াল হোস্ট আছে কিনা তা নির্ধারণ করতে এই নির্দেশাবলী ব্যবহার করুন।
উদাহরণস্বরূপ, যদি আপনি http://example.com:9001/proxy1 ইউআরএলটিতে 404 ত্রুটি লক্ষ্য করে থাকেন, তাহলে আপনাকে খুঁজে বের করতে হবে কোন ভার্চুয়াল হোস্টগুলোর হোস্ট অ্যালিয়াস example.com এবং পোর্ট 9001 রয়েছে।
- পাবলিক ক্লাউড এবং প্রাইভেট ক্লাউডের নতুন এজ UI- তে:
- অ্যাডমিন নির্বাচন করুন।
- ভার্চুয়াল হোস্ট নির্বাচন করুন।
- প্রতিটি এনভায়রনমেন্টের জন্য, সার্চ ফিল্টার ব্যবহার করে সেই ভার্চুয়াল হোস্টগুলো নির্ধারণ করুন যেগুলো নির্দিষ্ট হোস্ট অ্যালিয়াসের সাথে মেলে, যেটির মাধ্যমে এপিআই অনুরোধগুলো আহ্বান করা হয়েছিল।
- যদি আপনি একই হোস্ট অ্যালিয়াস ব্যবহার করে একাধিক ভার্চুয়াল হোস্ট খুঁজে পান, তাহলে এই সমস্যাটি সমাধান করতে রেজোলিউশন- এ যান।
উদাহরণস্বরূপ:

- প্রাইভেট ক্লাউডে ক্লাসিক UI- তে:
- এপিআই ট্যাবটি নির্বাচন করুন।
- পরিবেশ কনফিগারেশন নির্বাচন করুন।
- ভার্চুয়াল হোস্ট নির্বাচন করুন।
- প্রতিটি এনভায়রনমেন্টের জন্য ভার্চুয়াল হোস্টের তালিকাটি দেখুন, যাতে বোঝা যায় যে এপিআই অনুরোধগুলি যে নির্দিষ্ট হোস্ট অ্যালিয়াস দিয়ে পাঠানো হয়েছিল, তার সাথে কোনোটি মেলে কিনা।
- যদি আপনি একই হোস্ট অ্যালিয়াসের সাথে মিলে যাওয়া একাধিক ভার্চুয়াল হোস্ট খুঁজে পান, তাহলে এই সমস্যাটি সমাধান করতে রেজোলিউশন- এ যান।
উদাহরণস্বরূপ:

ব্যবস্থাপনা এপিআই
ম্যানেজমেন্ট এপিআই ব্যবহার করে একই হোস্ট অ্যালিয়াস/পোর্ট নম্বরযুক্ত একাধিক ভার্চুয়াল হোস্ট আছে কিনা তা নির্ধারণ করতে এই নির্দেশাবলী ব্যবহার করুন।
আপনার প্রতিষ্ঠানের প্রতিটি এনভায়রনমেন্টে থাকা ভার্চুয়াল হোস্টগুলোর সংজ্ঞা জেনে নিন, যাতে আপনি দেখতে পারেন কোন ভার্চুয়াল হোস্টগুলোর হোস্ট অ্যালিয়াস এবং পোর্ট নম্বর একই।
উদাহরণস্বরূপ, যদি আপনি
http://example.com:9001/proxy1ইউআরএলটিতে404ত্রুটি লক্ষ্য করে থাকেন, তাহলে আপনাকে খুঁজে বের করতে হবে কোন ভার্চুয়াল হোস্টগুলোর হোস্ট অ্যালিয়াসexample.comএবং পোর্ট9001রয়েছে।পরিবেশের তালিকাটি পান
পাবলিক ক্লাউড ব্যবহারকারী:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments -u USERNAME
প্রাইভেট ক্লাউড ব্যবহারকারী:
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
প্রাইভেট ক্লাউড ব্যবহারকারী:
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
প্রাইভেট ক্লাউড ব্যবহারকারী:
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" : [ ] }এই উদাহরণে আপনি দেখতে পাচ্ছেন যে,
testএবংdevএই দুটি ভিন্ন এনভায়রনমেন্টেdefaultদুটি ভার্চুয়াল হোস্টেই একই হোস্ট অ্যালিয়াসexample.comএবং পোর্ট নম্বর9001রয়েছে। এটাই404এররের কারণ।- যদি আপনি একই হোস্ট অ্যালিয়াসের সাথে মিলে যাওয়া একাধিক ভার্চুয়াল হোস্ট খুঁজে পান, তাহলে এই সমস্যাটি সমাধান করতে রেজোলিউশন- এ যান।
সমাধান
- নিশ্চিত করুন যে প্রতিটি ভার্চুয়াল হোস্টে শুধুমাত্র অনন্য হোস্ট অ্যালিয়াস এবং পোর্ট সংমিশ্রণ রয়েছে।
- যদি আপনি একই হোস্ট অ্যালিয়াস এবং পোর্ট সমন্বয় ব্যবহার করে একাধিক ভার্চুয়াল হোস্ট শনাক্ত করে থাকেন, তাহলে আপনাকে অবশ্যই সেগুলোকে একটি অনন্য হোস্ট অ্যালিয়াস দিয়ে আপডেট করতে হবে।
- আপনি Edge UI অথবা Management API ব্যবহার করে এগুলো আপডেট করতে পারেন, এর নির্দেশাবলী “Modifying a virtual host” অংশের অধীনে পাওয়া যাবে।
- নিশ্চিত করুন যে প্রতিটি হোস্ট অ্যালিয়াসের একটি সঠিক DNS এন্ট্রি রয়েছে।
- উপরে আলোচিত উদাহরণে যদি আমাদের কনফিগারেশনটি এইরকম দেখতে হতো:
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" : [ ] }' -iHTTP/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 Support-এর সাথে যোগাযোগ করুন:
আপনি যদি পাবলিক ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্যগুলো প্রদান করুন:
- সংস্থার নাম
- পরিবেশের নাম
- এপিআই প্রক্সি নাম
-
404ত্রুটিটি পুনরুৎপাদন করার জন্য সম্পূর্ণcurlকমান্ডটি ব্যবহার করুন। - যদি বর্তমানে
404ত্রুটি না ঘটে থাকে, তাহলে অতীতে যখন404ত্রুটি ঘটেছিল সেই সময়কাল এবং টাইমজোনের তথ্য প্রদান করুন।
আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্যগুলো প্রদান করুন:
- ব্যর্থ অনুরোধগুলির জন্য সম্পূর্ণ ত্রুটি বার্তা পরিলক্ষিত হয়েছে।
- যেসব সংস্থা, পরিবেশের নাম এবং এপিআই প্রক্সি নামের ক্ষেত্রে আপনি
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ত্রুটিগুলো ঘটেছিল।