503 পরিষেবা উপলভ্য নেই - 403 সহ প্রক্সি টানেল তৈরি করা যায়নি

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

সমস্যার উপসর্গ

API কলের উত্তর হিসেবে ক্লায়েন্ট অ্যাপ্লিকেশন 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 আপনার API প্রক্সিগুলিকে প্রক্সি সার্ভারের মাধ্যমে আপনার ব্যাকএন্ড সার্ভারের সাথে যোগাযোগ করতে দেয়, যেমন ফরোয়ার্ড প্রক্সি কনফিগার করুন-এ ব্যাখ্যা করা হয়েছে। ব্যবহৃত প্রক্সি ধরনের (প্রপার্টির মাধ্যমে বোঝানো হয়েছে HTTPClient.proxy.type) উপর নির্ভর করে প্রক্সি সার্ভার ব্যাকএন্ড সার্ভারের সাথে সুরক্ষিত (HTTPS) বা অসুরক্ষিত (HTTP) কানেকশন খোলে এবং উভয় দিকেই ডেটা ট্রান্সফার করে। এটি টানেলিং নামে পরিচিত।

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

সমস্যার কোড: protocol.http.ProxyTunnelCreationFailed

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

Apigee Edge থেকে পাওয়া উত্তরের faultstring-এ থাকা স্ট্যাটাস কোড সাধারণত এই সমস্যার সম্ভাব্য উচ্চ-স্তরের কারণ নির্দেশ করে।

ফল্টস্ট্রিং টেমপ্লেট:

Proxy refused to create tunnel with response status STATUS_CODE

faultstring-এ দেখা যাওয়া কিছু স্ট্যাটাস কোডের সম্ভাব্য কারণ:

নিচের সারণীতে faultstring-এ দেখানো স্ট্যাটাস কোডের উপর ভিত্তি করে সম্ভাব্য কারণগুলি বর্ণনা করা হয়েছে:

Faultstring বিবরণ
প্রক্সি 403 রেসপন্স স্ট্যাটাস সহ টানেল তৈরি করতে অস্বীকার করেছে

403 - Forbidden

ব্যাকএন্ড সার্ভারে কনফিগার করা ফায়ারওয়াল বা ACL বিধিনিষেধের কারণে এটি হতে পারে যা টানেল তৈরি করতে বাধা দেয়।

প্রক্সি 503 রেসপন্স স্ট্যাটাস সহ টানেল তৈরি করতে অস্বীকার করেছে

503 - Service Unavailable

ডিএনএস সংক্রান্ত সমস্যা, ফায়ারওয়াল বিধিনিষেধ, ব্যাকএন্ড সার্ভারের অনুপস্থিতির কারণে এটি হতে পারে যা টানেল তৈরি করতে বাধা দেয়

প্রক্সি, উত্তর স্ট্যাটাস 504 সহ টানেল তৈরি করতে অস্বীকার করেছে

504 - Gateway Timeout

টানেল তৈরি করার সময় টাইম-আউট হলে এটি হতে পারে

faultstring-এ দেখা স্ট্যাটাস কোডের উপর নির্ভর করে, সমস্যার সমাধান করতে আপনাকে উপযুক্ত পদ্ধতি ব্যবহার করতে হবে। আপনি যদি protocol.http.ProxyTunnelCreationFailed ত্রুটি কোডের জন্য faultstring-এ স্ট্যাটাস কোড 403 দেখেন, তাহলে কীভাবে সমস্যার সমাধান করবেন তা এই প্লেবুকে ব্যাখ্যা করা হয়েছে।

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

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

কারণ বিবরণ এর জন্য প্রযোজ্য সমস্যার সমাধান সংক্রান্ত নির্দেশাবলী
প্রক্সি, ৪০৩ রেসপন্স স্ট্যাটাস সহ টানেল তৈরি করতে অস্বীকার করেছে প্রক্সি সার্ভার টানেল তৈরি করতে অস্বীকার করে কারণ এটি Host হেডারে ব্যাকএন্ড সার্ভার হোস্ট নামের পরিবর্তে প্রক্সি সার্ভার হোস্ট নাম পায়। শুধুমাত্র Edge Private Cloud ব্যবহারকারীদের জন্য

সাধারণ ডায়াগনসিস ধাপ

এই সমস্যা ডায়াগনসিস করতে নিম্নলিখিত টুল/টেকনিকের মধ্যে একটি ব্যবহার করুন:

ট্রেস টুল

Trace টুল ব্যবহার করে সমস্যার ডায়াগনসিস করতে:

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

  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. আপনি প্রাইভেট ক্লাউড ব্যবহারকারী হলে, HTTP 503 Service Unavailable সমস্যার মূল তথ্য নির্ধারণ করতে NGINX অ্যাক্সেস লগ ব্যবহার করতে পারবেন।
  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 protocol.http.ProxyTunnelCreationFailed-এর ভ্যালুর সাথে ম্যাচ করা কোনও 503 সমস্যা খুঁজে পান, তাহলে 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

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

ডায়াগনসিস

  1. 503 Service Unavailable-এর জন্য সমস্যার কোড ও সমস্যার সোর্স নির্ধারণ করুন। এর জন্য Trace Tool বা NGINX অ্যাক্সেস লগ ব্যবহার করুন। এই বিষয়ে সমস্যা নির্ণয় করার সাধারণ ধাপ লিঙ্কে বিস্তারিত বলা আছে।
  2. সমস্যার মেসেজ পর্যালোচনা করুন এবং টানেল তৈরি করতে না পারার জন্য faultstring-এ উল্লেখ করা স্ট্যাটাস কোড নির্ধারণ করুন।
  3. এই পরিস্থিতিতে, স্ট্যাটাস কোড হল 403, যার অর্থ হল নিষিদ্ধ।
  4. এর অর্থ হল, টানেল তৈরি করার জন্য পর্যাপ্ত অধিকার বা বিশেষ সুবিধা নেই। সাধারণত, এটি তখনই হতে পারে যখন কোনও ফায়ারওয়াল বা ACL (অ্যাক্সেস কন্ট্রোল লিস্ট) সংক্রান্ত বিধিনিষেধ থাকে যা টানেল তৈরি করতে বাধা দেয়।
  5. আপনার ব্যাকএন্ড সার্ভারে কনফিগার করা কোনও ফায়ারওয়াল এবং/অথবা ACL বিধিনিষেধ পর্যালোচনা করুন যা টানেল তৈরি করা আটকাতে পারে।
  6. ফায়ারওয়াল এবং/অথবা ACL বিধিনিষেধের ধরনের উপর নির্ভর করে, আপনাকে যথাযথভাবে সমস্যার সমাধান করতে হবে।
  7. এই সমস্যা কীভাবে সমাধান করবেন তা ব্যাখ্যা করতে, ফায়ারওয়াল সংক্রান্ত বিধিনিষেধের একটি উদাহরণ নেওয়া যাক: সমস্যা:

    পরিস্থিতি: ব্যাকএন্ড সার্ভারে ফায়ারওয়াল সংক্রান্ত বিধিনিষেধের কারণে হোস্ট হেডারে সবসময় ব্যাকএন্ড সার্ভারের হোস্ট নেম থাকতে হবে

    Apigee Edge-এর মাধ্যমে পাস করা হোস্ট হেডার নির্ধারণ করতে আপনি নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করতে পারেন:

    ট্রেস

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

    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-এর মেসেজ প্রসেসর কম্পোনেন্ট থেকে আসা অনুরোধের জন্য প্রক্সি সার্ভারে tcpdump ক্যাপচার করুন:

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

      tcpdump কমান্ড ব্যবহার করা সম্পর্কে আরও জানতে, tcpdump দেখুন।

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

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

    4. প্যাকেট নম্বর ১৩, ১৪ এবং ১৫ থেকে দেখা যাচ্ছে যে মেসেজ প্রসেসর থ্রি-ওয়ে TCP হ্যান্ডশেক প্রসেসের মাধ্যমে প্রক্সি সার্ভারের সাথে কানেকশন স্থাপন করছে।
    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-এ প্রপার্টি true হিসেবে সেট করুন:

    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 সহায়তা টিমের সাথে যোগাযোগ করুন:

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

  • অনুরোধ সম্পূর্ণ না হওয়ার ক্ষেত্রে দেখা সম্পূর্ণ সমস্যার মেসেজ
  • পরিবেশের নাম
  • API প্রক্সি বান্ডেল
  • API অনুরোধের জন্য ট্রেস ফাইল
  • 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

রেফারেন্স