503 পরিষেবা অনুপলব্ধ - প্রক্সি টানেল তৈরি 403 এর সাথে ব্যর্থ হয়েছে৷

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

লক্ষণ

ক্লায়েন্ট অ্যাপ্লিকেশনটি এপিআই কলের প্রতিক্রিয়া হিসাবে 503 Service Unavailable HTTP স্ট্যাটাস কোড এবং 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 প্রপার্টি দ্বারা নির্দেশিত) উপর নির্ভর করে ব্যাকএন্ড সার্ভারের সাথে একটি সুরক্ষিত (HTTPS) বা অসুরক্ষিত (HTTP) সংযোগ স্থাপন করে এবং উভয় দিকে ডেটা স্থানান্তর করে। এই প্রক্রিয়াটি টানেলিং নামে পরিচিত।

ডিফল্টরূপে, Apigee Edge সমস্ত ট্র্যাফিকের জন্য টানেলিং ব্যবহার করে। টানেলিং নিষ্ক্রিয় করতে, HTTPClient.use.tunneling প্রপার্টিটি false এ সেট করতে হবে।

ত্রুটি কোড: protocol.http.ProxyTunnelCreationFailed

ফায়ারওয়াল, ACL (অ্যাক্সেস কন্ট্রোল লিস্ট) সীমাবদ্ধতা, DNS সমস্যা, ব্যাকএন্ড সার্ভারের অনুপলব্ধতা, টাইমআউট ইত্যাদির মতো কোনো সমস্যার কারণে প্রক্সি সার্ভার যদি Apigee Edge এবং ব্যাকএন্ড সার্ভারের মধ্যে একটি টানেল তৈরি করতে না পারে, তাহলে Apigee Edge ` protocol.http.ProxyTunnelCreationFailed এরর কোডটি রিটার্ন করে।

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 এ দেখা স্ট্যাটাস কোডের উপর নির্ভর করে, সমস্যাটি সমাধান করার জন্য আপনাকে উপযুক্ত কৌশল ব্যবহার করতে হবে। এই প্লেবুকটি ব্যাখ্যা করে যে, যদি আপনি protocol.http.ProxyTunnelCreationFailed ' এরর কোডের জন্য faultstring403 স্ট্যাটাস কোড দেখতে পান, তাহলে কীভাবে সমস্যাটি সমাধান করবেন।

সম্ভাব্য কারণসমূহ

এই ত্রুটি (স্ট্যাটাস কোড 403 ) দেখা দেয় যদি ব্যাকএন্ড সার্ভারে এমন কোনো ফায়ারওয়াল বা এসিএল (অ্যাক্সেস কন্ট্রোল লিস্ট) বিধিনিষেধ কনফিগার করা থাকে, যা প্রক্সি সার্ভারকে Apigee Edge এবং ব্যাকএন্ড সার্ভারের মধ্যে টানেল তৈরি হতে বাধা দেয়।

কারণ বর্ণনা সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য
প্রক্সি ৪০৩ রেসপন্স স্ট্যাটাস সহ টানেল তৈরি করতে অস্বীকৃতি জানিয়েছে। Host হেডারে ব্যাকএন্ড সার্ভার হোস্ট নেমের পরিবর্তে প্রক্সি সার্ভার হোস্ট নেম পাওয়ায় প্রক্সি সার্ভার টানেল তৈরি করতে অস্বীকৃতি জানাচ্ছে। শুধুমাত্র এজ প্রাইভেট ক্লাউড ব্যবহারকারীদের জন্য

সাধারণ রোগ নির্ণয়ের পদক্ষেপ

এই ত্রুটি নির্ণয় করতে নিম্নলিখিত সরঞ্জাম/কৌশলগুলোর মধ্যে যেকোনো একটি ব্যবহার করুন:

ট্রেস টুল

ট্রেস টুল ব্যবহার করে ত্রুটি নির্ণয় করতে:

  1. ট্রেস সেশনটি সক্রিয় করুন এবং নিম্নলিখিতগুলির মধ্যে যেকোনো একটি:
    • ত্রুটি ঘটার জন্য অপেক্ষা করুন, অথবা
    • আপনি যদি সমস্যাটি পুনরায় তৈরি করতে পারেন, 503 Service Unavailable সমস্যাটি পুনরুৎপাদন করতে API কলটি করুন। 503 Service Unavailable Proxy refused to create tunnel with response status 403
  2. নিশ্চিত করুন যে 'Show all FlowInfos' চালু আছে:

  3. ব্যর্থ হওয়া অনুরোধগুলোর মধ্যে একটি নির্বাচন করুন এবং ট্রেসটি পরীক্ষা করুন।
  4. ট্রেসের বিভিন্ন ধাপ অতিক্রম করে ত্রুটিটি কোথায় ঘটেছে তা খুঁজে বের করুন।
  5. আপনি সাধারণত 'টার্গেট রিকোয়েস্ট ফ্লো স্টার্টেড' ধাপের পরে ত্রুটিটি দেখতে পাবেন, যেমনটি নিচে দেখানো হয়েছে:

    নিম্নলিখিত তথ্যগুলো লক্ষ্য করুন:

    ত্রুটি: Proxy refused to create tunnel with response status 403

  6. ট্রেসটিতে থাকা AX (অ্যানালিটিক্স ডেটা রেকর্ডেড) ফেজটিতে যান এবং এটিতে ক্লিক করুন।
  7. Phase Details Response Headers সেকশন পর্যন্ত স্ক্রল ডাউন করুন এবং নিচে দেখানো অনুযায়ী X-Apigee-fault-code এবং X-Apigee-fault-source- এর মান নির্ধারণ করুন:

    ( বড় ছবি দেখুন )

    ( বড় ছবি দেখুন )

  8. আপনি X-Apigee-fault-code এবং X-Apigee-fault-source- এর মান protocol.http.ProxyTunnelCreationFailed এবং target হিসেবে দেখতে পাবেন। target যথাক্রমে, যা নির্দেশ করে যে প্রত্যাশিত হোস্ট হেডারটি না পাওয়ায় প্রক্সি টানেল তৈরি ব্যর্থ হয়েছে এবং এই ত্রুটিটি ঘটেছে।

    প্রতিক্রিয়া হেডার মূল্য
    এক্স-এপিজি-ফল্ট-কোড protocol.http.ProxyTunnelCreationFailed
    এক্স-এপিজি-ফল্ট-সোর্স target

এনজিআইএনএক্স

NGINX অ্যাক্সেস লগ ব্যবহার করে ত্রুটি নির্ণয় করতে:

  1. আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে HTTP 503 Service Unavailable ত্রুটি সম্পর্কিত মূল তথ্য নির্ধারণ করতে NGINX অ্যাক্সেস লগ ব্যবহার করতে পারেন।
  2. NGINX অ্যাক্সেস লগগুলি পরীক্ষা করুন:

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

    যেখানে: ORG , ORG , এবং PORT# প্রকৃত মান দ্বারা প্রতিস্থাপিত হয়।

  3. একটি নির্দিষ্ট সময়কালের মধ্যে (যদি সমস্যাটি অতীতে ঘটে থাকে) protocol.http.ProxyTunnelCreationFailed এরর কোড সহ কোনো 503 এরর আছে কিনা, অথবা এখনও কোনো রিকোয়েস্ট 503 এরর দেখিয়ে ফেইল করছে কিনা, তা খুঁজে দেখুন।
  4. যদি আপনি protocol.http.ProxyTunnelCreationFailed মানের সাথে মিলে যাওয়া X-Apigee-fault-code সহ কোনো 503 ত্রুটি খুঁজে পান, তাহলে X-Apigee-fault-source-এর মান নির্ধারণ করুন।

    NGINX অ্যাক্সেস লগ থেকে প্রাপ্ত ৫০৩ ত্রুটির নমুনা:

    NGINX অ্যাক্সেস লগ থেকে নেওয়া উপরের নমুনা এন্ট্রিটিতে X-Apigee-fault-code এবং X-Apigee-fault-source-এর জন্য নিম্নলিখিত মানগুলি রয়েছে:

    প্রতিক্রিয়া হেডার মূল্য
    এক্স-এপিজি-ফল্ট-কোড protocol.http.ProxyTunnelCreationFailed
    এক্স-এপিজি-ফল্ট-সোর্স target

কারণ: প্রক্সি ৪০৩ রেসপন্স স্ট্যাটাস সহ টানেল তৈরি করতে অস্বীকৃতি জানিয়েছে।

রোগ নির্ণয়

  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

      নমুনা ট্রেস যেখানে হোস্ট হেডারে প্রক্সি হোস্টের নাম দেখা যাচ্ছে

      ( বড় ছবি দেখুন )

      উপরে দেখানো নমুনা ট্রেসটিতে দেখা যাচ্ছে যে, হোস্ট হেডারে প্রক্সি হোস্ট www.proxyserver.com . যেহেতু ব্যাকএন্ড সার্ভারে একটি ফায়ারওয়াল সীমাবদ্ধতা কনফিগার করা আছে, যা হোস্ট হেডারে শুধুমাত্র ব্যাকএন্ড সার্ভারের হোস্ট নামটি থাকার প্রত্যাশা করে, তাই আপনি Proxy refused to create tunnel with response status 403 ত্রুটিটি পাচ্ছেন।

    tcpdump

    tcpdump ব্যবহার করে হোস্ট হেডার নির্ধারণ করতে

    1. নিম্নলিখিত কমান্ড ব্যবহার করে Apigee Edge-এর Message Processor কম্পোনেন্ট থেকে আসা অনুরোধগুলির জন্য প্রক্সি সার্ভারে একটি tcpdump ক্যাপচার করুন:

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

      tcpdump কমান্ড ব্যবহারের বিষয়ে আরও তথ্যের জন্য, tcpdump দেখুন।

    2. Wireshark টুল বা অনুরূপ কোনো টুল ব্যবহার করে tcpdump ডেটা বিশ্লেষণ করুন।
    3. এখানে Wireshark ব্যবহার করে tcpdump- এর একটি নমুনা বিশ্লেষণ দেওয়া হলো:

      ( বড় ছবি দেখুন )

    4. প্যাকেট নম্বর ১৩ , ১৪ এবং ১৫ থেকে বোঝা যায় যে, মেসেজ প্রসেসর একটি ত্রি-মুখী টিসিপি হ্যান্ডশেক প্রক্রিয়ার মাধ্যমে প্রক্সি সার্ভারের সাথে সংযোগ স্থাপন করছে।
    5. প্যাকেট ১৬- এ, মেসেজ প্রসেসর প্রক্সি হোস্ট httpbin.org এর সাথে সংযুক্ত হয়েছে (যা উপরের উদাহরণে দেখানো হয়েছে)।
    6. প্যাকেট ১৬ নির্বাচন করুন এবং প্যাকেটটির বিষয়বস্তু, বিশেষ করে মেসেজ প্রসেসর কর্তৃক প্রক্সি সার্ভারে প্রেরিত হোস্ট হেডারটি , বিস্তারিতভাবে পরীক্ষা করুন।

    7. উপরের নমুনাটিতে হোস্ট হেডার httpin.org দেখানো হয়েছে, যা হলো প্রক্সি সার্ভারের হোস্টনেম। তাই, যখন প্রক্সি সার্ভারটি উপরের হোস্ট হেডার httpin.org পাস করে ব্যাকএন্ড সার্ভারের সাথে টানেল তৈরি করার চেষ্টা করে, তখন এটি Proxy refused to create tunnel with response status 403 ত্রুটি দেখিয়ে ব্যর্থ হয়।

সমাধান

দৃশ্যকল্প: প্রক্সি সার্ভারের ফায়ারওয়াল বিধিনিষেধ অনুযায়ী হোস্ট হেডারে সর্বদা ব্যাকএন্ড সার্ভারের হোস্টনেম থাকা আবশ্যক।

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

  1. নিম্নলিখিত উদাহরণে দেখানো অনুযায়ী TargetEndpoint-এ use.proxy.host.header.with.target.uri প্রপার্টিটির মান true সেট করুন:

    নমুনা টার্গেটএন্ডপয়েন্ট কনফিগারেশন:

    <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 Support-এর সাথে যোগাযোগ করুন:

আপনি যদি একজন প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্যগুলো প্রদান করুন:

  • ব্যর্থ অনুরোধগুলির জন্য সম্পূর্ণ ত্রুটি বার্তা পরিলক্ষিত হয়েছে।
  • পরিবেশের নাম
  • এপিআই প্রক্সি বান্ডেল
  • এপিআই অনুরোধগুলির ট্রেস ফাইল
  • 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

তথ্যসূত্র