503 الخدمة غير متاحة - تعذّر إنشاء الاتصال النفقي للخادم الوكيل برقم 403

أنت تعرض مستندات Apigee Edge.
انتقل إلى مستندات Apigee X.
معلومات

المشكلة

يحصل تطبيق العميل على رمز حالة HTTP 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 للخوادم الوكيلة لواجهة برمجة التطبيقات بالتواصل مع خادم الخلفية من خلال خادم وكيل. كما هو موضح في ضبط الخادم الوكيل لإعادة التوجيه يفتح الخادم الوكيل بروتوكولاً آمنًا (HTTPS) أو غير آمن (HTTP) من الاتصال بخادم الخلفية بناءً على نوع الخادم الوكيل (يشار إليه من خلال الموقع HTTPClient.proxy.type) يستخدمها الموقع وينقل البيانات في كلا الاتجاهين. يُعرف ذلك باسم النفق.

بشكل تلقائي، تستخدم Apigee Edge الاتصال النفقي لجميع الزيارات. لإيقاف الاتصال النفقي، يستخدم الموقع يجب ضبط HTTPClient.use.tunneling على false.

رمز الخطأ: Protocol.http.ProxyTunnelCreationتعذّر

تعرض Apigee Edge رمز الخطأ protocol.http.ProxyTunnelCreationFailed إذا كانت تعذر على الخادم الوكيل إنشاء نفق بين Apigee Edge وخادم الخلفية بسبب أي مشكلات مثل جدار الحماية، وقيود قائمة التحكم بالوصول (ACL)، ومشكلات نظام أسماء النطاقات، وخادم الخلفية وعدم التوفُّر والمهلات وما إلى ذلك

رمز الحالة في faultstring للاستجابة من Apigee Edge عادةً إلى سبب كبير محتمل أدى إلى هذا الخطأ.

نموذج سلسلة الأخطاء:

Proxy refused to create tunnel with response status STATUS_CODE

الأسباب المحتملة لبعض رموز الحالة المرصودة في سلسلة الخطأ:

يصف الجدول التالي الأسباب المحتملة بناءً على رمز الحالة المشار إليه في faultstring:

ثغرة الوصف
رفض الخادم الوكيل إنشاء نفق بحالة الاستجابة 403.

403 - Forbidden

قد يحدث هذا بسبب قيود جدار الحماية أو قائمة التحكم بالوصول التي تم تكوينها على خادم الخلفية الذي يمنع إنشاء النفق.

رفض الخادم الوكيل إنشاء نفق بحالة الاستجابة 503.

503 - Service Unavailable

يمكن أن يحدث هذا بسبب مشكلات في نظام أسماء النطاقات أو قيود جدار الحماية أو قيود عدم التوافر الذي يمنع إنشاء نفق

رفض الخادم الوكيل إنشاء نفق بحالة الاستجابة 504

504 - Gateway Timeout

يمكن أن يحدث ذلك في حال حدوث مهلات أثناء إنشاء النفق.

بناءً على رمز الحالة الذي تم رصده في faultstring، يجب استخدام. والأساليب المناسبة لاستكشاف المشكلة وإصلاحها. يشرح هذا الدليل الإرشادي كيفية تحديد المشاكل وحلّها حدوث المشكلة إذا لاحظت رمز الحالة 403 في faultstring لرمز الخطأ protocol.http.ProxyTunnelCreationFailed.

الأسباب المحتملة

يحدث هذا الخطأ (رمز الحالة 403) في حالة وجود أي جدار حماية أو قائمة التحكم بالوصول (ACL) قائمة التحكم) التي تم ضبطها على خادم الخلفية والتي تمنع إنشاء النفق التي تم إنشاؤها بين Apigee Edge وخادم الخلفية من خلال الخادم الوكيل.

السبب الوصف إرشادات استكشاف الأخطاء وإصلاحها التي تنطبق على
رفض الخادم الوكيل إنشاء نفق بحالة الاستجابة 403 يرفض الخادم الوكيل إنشاء النفق أثناء تلقيه اسم مضيف الخادم الوكيل بدلاً من اسم مضيف خادم الخلفية في العنوان Host. مستخدمو Edge Private Cloud فقط

خطوات التشخيص الشائعة

استخدِم إحدى الأدوات/الأساليب التالية لتشخيص هذا الخطأ:

أداة التتبُّع

لتشخيص الخطأ باستخدام أداة التتبُّع:

  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 (البيانات المسجَّلة في "إحصاءات Google") في عملية التتبُّع وانقر عليها.
  7. مرِّر لأسفل إلى قسم تفاصيل المرحلة عناوين الرد تحديد قيم X-Apigee-fault-code وX-Apigee-fault-code على أنه كما هو موضح أدناه:

    ( عرض صورة أكبر)

    ( عرض صورة أكبر)

  8. ستظهر لك قيمتا X-Apigee-fault-code وX-Apigee-error-source. على protocol.http.ProxyTunnelCreationFailed وtarget على التوالي، ما يشير إلى أنّ هذا الخطأ حدث بسبب نفق الخادم الوكيل تعذّر الإنشاء بسبب عدم استلام عنوان المضيف المتوقع.

    عناوين الردود القيمة
    X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailed
    X-Apigee-fault-source target

NGINX

لتشخيص الخطأ باستخدام سجلات وصول NGINX:

  1. إذا كنت مستخدمًا للسحابة الإلكترونية الخاص، يمكنك استخدام سجلات وصول NGINX لإجراء ما يلي: لتحديد المعلومات الرئيسية حول HTTP 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. إذا عثرت على أي 503 أخطاء في رمز خطأ X-Apigee التي تطابق قيمة protocol.http.ProxyTunnelCreationFailed، ثم تحديد قيمة X-Apigee-fault-source.

    نموذج الخطأ 503 من سجلّ وصول NGINX:

    يتضمن الإدخال النموذجي أعلاه من سجل وصول NGINX القيم التالية الخاصة بـ X- Apigee-يتوفر كود وX-Apigee-error-source:

    عناوين الردود القيمة
    X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailed
    X-Apigee-fault-source target

السبب: رفض الخادم الوكيل إنشاء نفق بحالة الاستجابة 403

التشخيص

  1. حدِّد رمز الخطأ ومصدر الخطأ في 503 Service Unavailable باستخدام سجلّات وصول أداة التتبُّع أو NGINX كما هو موضَّح في. خطوات التشخيص الشائعة:
  2. راجِع رسالة الخطأ وحدِّد رمز الحالة. المشار إليه في faultstring لتعذُّر إنشاء النفق.
  3. في هذا السيناريو، يكون رمز الحالة هو 403، وهو ما يعني محظور.
  4. وهذا يعني أنّه ليست هناك حقوق أو امتيازات كافية لإنشاء النفق. يمكن أن عادةً إذا كان هناك أي قيود جدار حماية أو قائمة تحكم بالوصول (ACL) تمنع إنشاء النفق.
  5. راجع أي قيود جدار حماية و/أو قائمة التحكم بالوصول تمت تهيئتها على خادم الخلفية والتي أن تمنع إنشاء النفق.
  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. يمكنك الحصول على tcpdump على الخادم الوكيل للطلبات الواردة من مكوِّن معالج الرسائل في Apigee Edge باستخدام الأمر التالي:

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

      لمزيد من المعلومات حول استخدام الأمر tcpdump، يمكنك الاطّلاع على tcpdump.

    2. تحليل بيانات tcpdump باستخدام أداة Wireshark أو ما شابه ذلك .
    3. فيما يلي تحليل نموذجي tcpdump باستخدام Wireshark:

      ( عرض صورة أكبر)

    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 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 Private، يُرجى تقديم المعلومات التالية:

  • ظهور رسالة خطأ كاملة للطلبات التي تعذّر تنفيذها
  • اسم البيئة
  • حزمة الخادم الوكيل لواجهة برمجة التطبيقات
  • ملف تتبُّع طلبات البيانات من واجهة برمجة التطبيقات
  • سجلات وصول 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
    

المراجع