يتم الآن عرض مستندات 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 . |
قد يحدث ذلك بسبب قيود جدار الحماية أو قائمة التحكم بالوصول التي تم ضبطها على خادم الخلفية، ما يمنع إنشاء نفق. |
رفض الخادم الوكيل إنشاء نفق حالة الاستجابة 503 . |
يمكن أن يحدث ذلك بسبب مشاكل في نظام أسماء النطاقات أو قيود جدار الحماية أو عدم توفّر خادم الخلفية ما يمنع إنشاء النفق. |
رفض الخادم الوكيل إنشاء نفق حالة الاستجابة 504 |
يمكن أن يحدث هذا في حال وجود مهلات أثناء إنشاء النفق. |
واستنادًا إلى رمز الحالة الذي تم رصده في faultstring
، عليك استخدام الأساليب المناسبة لتحديد المشكلة وحلّها. يوضّح هذا الدليل الإرشادي كيفية تحديد المشاكل وحلّها إذا لاحظت رمز الحالة 403
في faultstring
لرمز الخطأ protocol.http.ProxyTunnelCreationFailed
.
الأسباب المحتملة
يحدث هذا الخطأ (رمز الحالة 403
) إذا كانت هناك أي قيود جدار حماية أو ACL (قائمة التحكم بالوصول) تم ضبطها على خادم الخلفية، ما يمنع إنشاء النفق بين Apigee Edge وخادم الخلفية من خلال الخادم الوكيل.
السبب | الوصف | تعليمات تحديد المشاكل وحلّها السارية على |
---|---|---|
رفض الخادم الوكيل إنشاء نفق حالة الاستجابة 403 | يرفض الخادم الوكيل إنشاء نفق، لأنّه يتلقّى اسم مضيف الخادم الوكيل بدلاً من اسم مضيف خادم الخلفية في عنوان Host . |
مستخدمو Edge Private Cloud فقط |
خطوات التشخيص الشائعة
استخدِم إحدى الأدوات/الأساليب التالية لتشخيص هذا الخطأ:
أداة التتبُّع
لتشخيص الخطأ باستخدام أداة التتبُّع:
- فعِّل جلسة التتبُّع وإمّا:
- انتظر حتى حدوث الخطأ، أو
- إذا كان بإمكانك إعادة إظهار المشكلة، يمكنك الاتصال بواجهة برمجة التطبيقات لإعادة إظهار المشكلة
503 Service Unavailable
باستخدامProxy refused to create tunnel with response status 403
.
تأكَّد من تفعيل Show all FlowInfos (إظهار جميع عمليات التدفق):
- اختَر أحد الطلبات التي تعذّر تنفيذها وافحص بيانات التتبّع.
- التنقّل خلال المراحل المختلفة لعملية التتبّع وتحديد مكان حدوث الخطأ.
سيظهر لك الخطأ عادةً بعد مرحلة بدء تدفق الطلب المستهدَف كما هو موضّح أدناه:
دوِّن المعلومات التالية:
خطأ:
Proxy refused to create tunnel with response status 403
- انتقِل إلى مرحلة AX (بيانات "إحصاءات Google" المسجّلة) في التتبُّع وانقر عليها.
انتقِل إلى قسم عناوين الاستجابة لـ تفاصيل المرحلة وحدِّد قيم X-Apigee-error-code وX-Apigee- error-source كما هو موضّح أدناه:
ستظهر لك قيمتا 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:
- إذا كنت من مستخدمي السحابة الإلكترونية الخاصة، يمكنك استخدام سجلات وصول NGINX لتحديد المعلومات الأساسية حول أخطاء
503 Service Unavailable
في HTTP. تحقَّق من سجلات وصول NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
المكان: يتم استبدال ORG وORG وPORT# بالقيم الفعلية.
- ابحث عن أي أخطاء
503
تتضمّن رمز الخطأprotocol.http.ProxyTunnelCreationFailed
خلال مدة معيّنة (في حال حدثت المشكلة في السابق) أو لمعرفة ما إذا كانت هناك أي طلبات لا تزال يتعذّر تنفيذها من خلال503
. إذا عثرت على أي
503
أخطاء في رمز X-Apigee-Error-code المطابق لقيمةX-Apigee-fault-code ، حدِّد قيمة X-Apigee-fault-codeنموذج لخطأ 503 من سجلّ الوصول إلى NGINX:
يحتوي إدخال النموذج أعلاه من سجل الوصول إلى NGINX على القيم التالية للسمة X- Apigee-error-code وX-Apigee-error-source:.
عناوين الاستجابة القيمة X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailed
X-Apigee-fault-source target
السبب: رفض الخادم الوكيل إنشاء نفق بحالة الاستجابة 403
التشخيص
- حدِّد رمز الخطأ ومصدر الخطأ لـ
503 Service Unavailable
باستخدام أداة التتبُّع أو سجلات وصول NGINX كما هو موضّح في خطوات التشخيص الشائعة. - راجِع رسالة الخطأ وحدِّد رمز الحالة المُشار إليه في
faultstring
لتعذُّر إنشاء النفق. - في هذا السيناريو، يكون رمز الحالة هو
403
، ويعني ذلك محظور. - يعني ذلك عدم وجود حقوق أو امتيازات كافية لإنشاء النفق. وقد يحدث هذا عادةً إذا كان هناك أي قيود على جدار الحماية أو قائمة التحكم بالوصول (ACL) تمنع إنشاء النفق.
- راجع أي جدار حماية و/أو قيود قائمة التحكم بالوصول (ACL) التي تم ضبطها على خادم الخلفية والتي يمكن أن تمنع إنشاء النفق.
- بناءً على نوع جدار الحماية و/أو قيود قائمة التحكم بالوصول، عليك إصلاح المشكلة بشكل مناسب.
لنلقِ نظرة على مثال عن قيد على جدار الحماية لتوضيح كيفية تحديد هذه المشكلة وحلّها:
السيناريو: قيد جدار الحماية في خادم الخلفية يتوقع أن يحتوي عنوان المضيف دائمًا على اسم مضيف خادم الخلفية
يمكنك استخدام إحدى الطرق التالية لتحديد عنوان المضيف الذي تم تمريره بواسطة Apigee Edge:
التتبّع
لتحديد عنوان المضيف باستخدام التتبع:
- تأكَّد من أنّ
faultstring
يحتوي علىProxy refused to create tunnel with response status 403
باستخدام بيانات التتبُّع كما هو موضّح في خطوات التشخيص الشائعة. - انتقِل إلى مرحلة بدء تدفق الطلب المستهدَف وراجِع عناوين الطلب.
- تحقَّق من قيمة اسم المضيف المحدّدة في عنوان المضيف في قسم عناوين الطلب.
- إذا كان عنوان المضيف يحتوي على اسم مضيف الخادم الوكيل، يكون هذا هو سبب هذا الخطأ.
- ويرجع ذلك إلى أنّه تم ضبط جدار الحماية على الخادم الخلفي لقبول الطلبات فقط إذا كان عنوان المضيف يحتوي على اسم خادم الخلفية.
- لذلك عندما يحاول الخادم الوكيل إنشاء اتصال نفَقي باستخدام خادم الخلفية،
يفشل مع ظهور الخطأ
Proxy refused to create tunnel with response status 403
.نموذج التتبّع يعرض عنوان مضيف يتضمن اسم مضيف خادم وكيل
في نموذج التتبّع الظاهر أعلاه، يوضِّح أنّ عنوان المضيف يحتوي على اسم مضيف الخادم الوكيل.
www.proxyserver.com.
وبما أنّ هناك قيدًا لجدار الحماية تم ضبطه على خادم الخلفية يتوقع أن يتم تضمين اسم مضيف خادم الخلفية فقط في عنوان المضيف، ستظهر لك رسالة الخطأProxy refused to create tunnel with response status 403
.
tcpdump
لتحديد عنوان المضيف باستخدام tcpdump
التقِط
tcpdump
على الخادم الوكيل للطلبات الواردة من مكوّن معالجة الرسائل في Apigee Edge باستخدام الأمر التالي:tcpdump -i any -s 0 host MP_IP_ADDRESS -w FILE_NAME
لمزيد من المعلومات حول استخدام الأمر
tcpdump
، يُرجى الاطّلاع على tcpdump.- حلِّل بيانات
tcpdump
باستخدام أداة Wireshark أو أداة مشابهة. إليك نموذج تحليل من tcpdump باستخدام Wireshark:
- تُظهر أرقام الحِزم 13 و14 و15 أنّ "معالج الرسائل" ينشئ اتصالاً بالخادم الوكيل من خلال عملية تأكيد اتصال TCP ثلاثية الاتجاه.
- في الحزمة 16، اتصل معالج الرسائل بمضيف الخادم الوكيل
httpbin.org
(كما هو موضح في المثال أعلاه). اختَر الحزمة 16 وافحص محتوى الحزمة بالتفصيل، لا سيما عنوان المضيف الذي يتم تمريره إلى الخادم الوكيل من خلال معالج الرسائل.
- يعرض النموذج أعلاه عنوان المضيف
httpin.org
، وهو اسم المضيف للخادم الوكيل. لذلك، عندما يحاول الخادم الوكيل إنشاء اتصال نفَقي مع خادم الخلفية من خلال تمرير عنوان المضيفhttpin.org
أعلاه، سيتعذر ذلك مع ظهور الخطأProxy refused to create tunnel with response status 403
.
- تأكَّد من أنّ
درجة الدقّة
السيناريو: قيد جدار الحماية في الخادم الوكيل يتوقع أن يحتوي عنوان المضيف دائمًا على اسم المضيف لخادم الخلفية
إذا تأكدت من أن السبب في حدوث هذا الخطأ هو أن الجدار الناري على الخادم الخلفي قد تم ضبطه على نحو يتوقع أن يحتوي عنوان المضيف دائمًا على اسم مضيف خادم backend، بينما يرسل معالج الرسائل اسم مضيف backend، عليك تنفيذ الخطوات التالية لحل المشكلة:
اضبط الخاصية
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>
تأكَّد من أنّ الخصائص الأخرى ذات الصلة بخادم الوكيل لإعادة التوجيه قد تم ضبطها في "معالج الرسائل" على النحو التالي:
- راجِع الملف
/opt/apigee/customer/application/message-processor.properties
في كل معالج من معالجات الرسائل. تأكَّد من ضبط السمات التالية وفقًا لحالة الاستخدام أو المتطلبات:
أمثلة لقيم المواقع:
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 خاصًا، يُرجى تقديم المعلومات التالية:
- رسالة الخطأ الكاملة التي تم رصدها للطلبات التي تعذّر تنفيذها
- اسم البيئة
- حزمة الخادم الوكيل لواجهة برمجة التطبيقات
- ملف التتبُّع الخاص بطلبات واجهة برمجة التطبيقات
سجلات وصول 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