أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
المشكلة
يتلقّى تطبيق العميل رمز حالة 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.ProxyTunnelCreationFailed
تعرض Apigee Edge رمز الخطأ protocol.http.ProxyTunnelCreationFailed إذا تعذّر على خادم الوكيل إنشاء قناة بين Apigee Edge وخادم الخلفية بسبب أي مشاكل، مثل جدار الحماية، وقيود قائمة التحكّم بالوصول (ACL)، ومشاكل نظام أسماء النطاقات (DNS)، وعدم توفّر خادم الخلفية، وانتهاء المهلة، وما إلى ذلك.
يشير رمز الحالة في faultstring من الردّ الوارد من Apigee Edge عادةً إلى سبب محتمل على مستوى عالٍ أدّى إلى حدوث هذا الخطأ.
نموذج Faultstring:
Proxy refused to create tunnel with response status STATUS_CODE
الأسباب المحتملة لبعض رموز الحالة التي تم رصدها في faultstring:
يوضّح الجدول التالي الأسباب المحتملة استنادًا إلى رمز الحالة الموضّح في
faultstring:
| Faultstring | الوصف |
|---|---|
رفض الخادم الوكيل إنشاء نفق مع رمز حالة الاستجابة 403 |
قد يحدث ذلك بسبب قيود جدار الحماية أو قوائم التحكّم بالوصول (ACL) التي تم ضبطها على خادم الخلفية والتي تمنع إنشاء النفق. |
رفض الخادم الوكيل إنشاء نفق مع رمز حالة الاستجابة 503 |
يمكن أن يحدث ذلك بسبب مشاكل في نظام أسماء النطاقات (DNS) أو قيود جدار الحماية أو عدم توفّر خادم الخلفية الذي يمنع إنشاء النفق. |
| رفض الخادم الوكيل إنشاء نفق مع حالة الرد 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.
تأكَّد من تفعيل خيار عرض جميع معلومات FlowInfo:
- اختَر أحد الطلبات التي تعذّر تنفيذها وافحص التتبُّع.
- تنقَّل بين مراحل التتبُّع المختلفة وحدِّد مكان حدوث الخطأ.
سيظهر الخطأ عادةً بعد المرحلة Target Request Flow Started كما هو موضّح أدناه:
يُرجى مراعاة المعلومات التالية:
الخطأ:
Proxy refused to create tunnel with response status 403- انتقِل إلى مرحلة AX (تسجيل بيانات "إحصاءات Google") في التتبُّع وانقر عليها.
انتقِل للأسفل إلى قسم تفاصيل المرحلة عناوين الردود وحدِّد قيمتَي X-Apigee-fault-code وX-Apigee-fault-source كما هو موضّح أدناه:
ستظهر لك قيمتا X-Apigee-fault-code وX-Apigee-fault-source على النحو
protocol.http.ProxyTunnelCreationFailedوtargetعلى التوالي، ما يشير إلى أنّ هذا الخطأ ناتج عن تعذّر إنشاء نفق الخادم الوكيل لأنّه لم يتم تلقّي عنوان المضيف المتوقّع.عناوين الاستجابة القيمة X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailedX-Apigee-fault-source target
NGINX
لتشخيص الخطأ باستخدام سجلّات الوصول إلى NGINX، اتّبِع الخطوات التالية:
- إذا كنت مستخدمًا في Private Cloud، يمكنك استخدام سجلّات الوصول إلى NGINX لتحديد المعلومات الأساسية حول أخطاء HTTP
503 Service Unavailable. تحقَّق من سجلّات الوصول إلى NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_logالمكان: يتم استبدال ORG وORG وPORT# بالقيم الفعلية.
- ابحث لمعرفة ما إذا كانت هناك أي أخطاء
503برمز الخطأprotocol.http.ProxyTunnelCreationFailedخلال مدة زمنية معيّنة (إذا حدثت المشكلة في الماضي) أو ما إذا كانت هناك أي طلبات لا تزال غير ناجحة مع503. إذا عثرت على أي
503أخطاء في X-Apigee-fault-code تتطابق مع قيمةprotocol.http.ProxyTunnelCreationFailed، حدِّد قيمة X-Apigee-fault-source.مثال على الخطأ 503 من سجلّ الوصول إلى NGINX:
يحتوي نموذج الإدخال أعلاه من سجلّ الوصول إلى NGINX على القيم التالية لـ X- Apigee-fault-code وX-Apigee-fault-source:
عناوين الاستجابة القيمة X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailedX-Apigee-fault-source target
السبب: رفض الخادم الوكيل إنشاء نفق مع حالة الردّ 403
التشخيص
- حدِّد رمز الخطأ ومصدر الخطأ الخاصين بـ
503 Service Unavailableباستخدام "أداة التتبُّع" أو سجلّات الوصول إلى NGINX كما هو موضّح في خطوات التشخيص الشائعة. - راجِع رسالة الخطأ وحدِّد رمز الحالة
المشار إليه في
faultstringفي حال تعذّر إنشاء النفق. - في هذا السيناريو، رمز الحالة هو
403، ما يعني ممنوع. - يعني ذلك أنّه لا تتوفّر أذونات أو امتيازات كافية لإنشاء النفق. يمكن أن يحدث ذلك عادةً إذا كانت هناك أي قيود على جدار الحماية أو قائمة التحكّم بالوصول (ACL) تمنع إنشاء النفق.
- راجِع أي قيود على جدار الحماية و/أو قوائم التحكّم بالوصول (ACL) تم ضبطها على خادم الخلفية ويمكن أن تمنع إنشاء النفق.
- استنادًا إلى نوع جدار الحماية و/أو قيود قائمة التحكّم بالوصول، عليك حلّ المشكلة بالطريقة المناسبة.
لنأخذ مثالاً على قيود جدار الحماية لشرح كيفية تحديد المشاكل وحلّها:
السيناريو: يتوقّع خادم الخلفية الذي يخضع لقيود جدار الحماية أن يحتوي عنوان Host Header دائمًا على اسم مضيف خادم الخلفية
يمكنك استخدام إحدى الطرق التالية لتحديد عنوان المضيف الذي تم تمريره بواسطة Apigee Edge:
التتبّع
لتحديد عنوان Host Header باستخدام Trace، اتّبِع الخطوات التالية:
- تأكَّد من أنّ
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.
- تأكَّد من أنّ
الدقة
السيناريو: قيود جدار الحماية على الخادم الوكيل تتطلّب أن يحتوي عنوان المضيف دائمًا على اسم مضيف الخادم الخلفي
إذا تبيّن لك أنّ سبب هذا الخطأ هو أنّ جدار الحماية على خادم الخلفية تم إعداده بحيث يتوقّع أن يحتوي عنوان المضيف دائمًا على اسم مضيف خادم الخلفية، بينما يرسل "معالج الرسائل" اسم مضيف الخادم الوكيل، اتّبِع الخطوات التالية لحلّ المشكلة:
اضبط السمة
use.proxy.host.header.with.target.uriعلى القيمة true في TargetEndpoint كما هو موضّح في المثال التالي:نموذج لإعدادات 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:
إذا كنت مستخدمًا في Private 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