يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات
Apigee X. المعلومات
المشكلة
يحصل تطبيق العميل على رمز حالة HTTP 502 Bad Gateway
مع رمز الخطأ protocol.http.ResponseWithBody
كاستجابة لطلبات البيانات من واجهة برمجة التطبيقات.
رسالة الخطأ
يتلقى تطبيق العميل رمز الاستجابة التالي:
HTTP/1.1 502 Bad Gateway
بالإضافة إلى ذلك، قد تلاحظ إحدى رسائل الخطأ التالية:
{ "fault":{ "faultstring":"Received 204 Response with message body", "detail":{ "errorcode":"protocol.http.ResponseWithBody" } } }
{ "fault":{ "faultstring":"Received 205 Response with message body", "detail":{ "errorcode":"protocol.http.ResponseWithBody" } } }
الأسباب المحتملة
يحدث هذا الخطأ إذا كانت استجابة HTTP من خادم الخلفية إلى Apigee Edge إما 204 No Content
أو 205 Reset Content
ولكنّها تحتوي على نص الاستجابة و/أو واحد أو أكثر من العناوين التالية:
Content-Length
Content-Encoding
Transfer-Encoding
وفقًا للمواصفات
RFC 7231، الفقرة 6.3.5: 204 بلا محتوى
و
RFC 7231، الفقرة 6.3.6: 205 إعادة ضبط المحتوى، يُتوقّع عدم إرسال أي محتوى إضافي
كجزء من نص حمولة الاستجابة برمز الحالة 204 No
Content
أو 205 Reset Content
من خلال خادم المصدر. وتشير عناوين الاستجابة، مثل Content-Length
أو Content-Encoding
أو Transfer-Encoding
، إلى حجم حمولة الاستجابة أو نوعها أو تنسيقها.
نتيجةً لذلك، تعرض Apigee Edge رمز الحالة 502 Bad Gateway
مع رمز الخطأ protocol.http.ResponseWithBody
للعميل في الحالات التالية:
رمز الحالة من خادم الخلفية | ||
---|---|---|
تحتوي الاستجابة الواردة من خادم الخلفية على | 204 لا يوجد محتوى | 205 إعادة ضبط المحتوى |
نص الاستجابة | خطأ | خطأ |
عنوان واحد ( (تم الضبط على قيمة غير صفرية) |
خطأ | خطأ |
(تم الضبط على ترميز متوافق في Apigee Edge) |
خطأ | لا خطأ |
Transfer-Encoding |
خطأ | خطأ |
في ما يلي الأسباب المحتملة لهذا الخطأ:
السبب | الوصف | تعليمات تحديد المشاكل وحلّها السارية على |
---|---|---|
نص الاستجابة أو العناوين التي تتضمّن استجابة 204 من خادم الخلفية | يرسل خادم الخلفية استجابة 204 No Content أو 205 Reset Content مع نص استجابة و/أو عنوان واحد أو أكثر من العناوين Content-Type أو Content-Encoding أو Transfer-Encoding . |
مستخدمو Edge العام والخاص على السحابة الإلكترونية |
خطوات التشخيص الشائعة
استخدِم إحدى الأدوات/الأساليب التالية لتشخيص هذا الخطأ:
مراقبة واجهة برمجة التطبيقات
لتشخيص الخطأ باستخدام مراقبة واجهة برمجة التطبيقات:
- سجِّل الدخول إلى واجهة مستخدم Apigee Edge كمستخدم لديه دور مناسب.
انتقِل إلى المؤسسة التي تريد التحقيق في المشكلة فيها.
- انتقل إلى صفحة تحليل > مراقبة واجهة برمجة التطبيقات > التحقيق.
- اختَر الإطار الزمني المحدّد الذي لاحظت فيه الأخطاء.
- ارسم رمز الخطأ مقابل الوقت.
اختَر خلية تحتوي على رمز الخطأ
protocol.http.ResponseWithBody
كما هو موضّح أدناه:ستظهر لك المعلومات المتعلّقة برمز الخطأ
protocol.http.ResponseWithBody
كما هو موضّح أدناه:انقر على عرض السجلات ووسِّع الصف المتعلق بالطلب الذي تعذّر إكماله.
- من نافذة السجلّات، دوِّن التفاصيل التالية:
- رمز الحالة:
502
- مصدر الخطأ:
target
- رمز الخطأ:
protocol.http.ResponseWithBody
.
- رمز الحالة:
- إذا كانت قيمة مصدر الخطأ
target
وقيمة رمز الخطأ هيprotocol.http.ResponseWithBody
، يعني ذلك أنّ الخادم الخلفي أرسل رمز الحالة204 No Content
أو205 Reset Content
مع نص الاستجابة و/أو أحد العناوين المذكورة في قسم الأسباب المحتملة.
أداة التتبُّع
لتشخيص الخطأ باستخدام أداة التتبُّع:
- فعِّل جلسة التتبُّع
وإمّا:
- انتظِر حتى يحدث الخطأ
502 Bad Gateway
. - إذا كان بإمكانك إعادة إظهار المشكلة، عليك إجراء طلب بيانات من واجهة برمجة التطبيقات وإعادة إظهار الخطأ
502 Bad Gateway
.
- انتظِر حتى يحدث الخطأ
تأكَّد من تفعيل Show all FlowInfos (إظهار جميع عمليات التدفق):
- اختَر أحد الطلبات التي تعذّر تنفيذها وافحص بيانات التتبّع.
- التنقّل خلال المراحل المختلفة لعملية التتبّع وتحديد مكان حدوث الخطأ.
عادةً ما يظهر الخطأ في
flowinfo
الخطأ بعد مرحلة تم إرسال الطلب إلى الخادم الهدف مباشرةً كما هو موضّح أدناه:السيناريو الأول
السيناريو 1: يستجيب خادم الخلفية برمز الحالة
204 No Content
الذي يتضمن نص الاستجابة و/أو أحد العناوين المُدرَجة في الأسباب المحتملة.لاحظ قيم ما يلي من التتبع:
- خطأ:
Received 204 Response with message body
- error.class:
com.apigee.rest.framework.BadGateway
السيناريو الثاني
السيناريو 2: يستجيب خادم الخلفية برمز الحالة
204 No Content
الذي يتضمن نص الاستجابة و/أو أحد العناوين المذكورة في الأسباب المحتملة.لاحظ قيم ما يلي من التتبع:
- خطأ:
Received 205 Response with message body
- error.class:
com.apigee.rest.framework.BadGateway
- خطأ:
- انتقِل إلى مرحلة AX (بيانات "إحصاءات Google" المسجّلة) في التتبُّع وانقر عليها.
انتقِل للأسفل إلى قسم Stage Details (تفاصيل المرحلة) وError Headers (عناوين الخطأ) وحدِّد قيمتَي X-Apigee-Error-code وX-Apigee-fulfillment-source كما هو موضّح أدناه:
- يُرجى العِلم أنّ قيمتَي X-Apigee-fault-code وX-Apigee-fault-code
are protocol.http.ResponseWithBody
وtarget
على التوالي. يشير هذا إلى أنّ الخطأ حدث لأنّ خادم الخلفية أرسل رمز الحالة204 No Content
أو205 Reset Content
مع نص الاستجابة و/أو أحد العناوين المذكورة في الأسباب المحتملة.خطأ القيمة X-Apigee-fault-code protocol.http.ResponseWithBody
X-Apigee-fault-source target
NGINX
لتشخيص الخطأ باستخدام سجلات الوصول إلى NGINX:
- إذا كنت من مستخدمي السحابة الإلكترونية الخاصة، يمكنك استخدام سجلات وصول NGINX لتحديد المعلومات الأساسية حول HTTP
502 Bad Gateway
. تحقَّق من سجلات وصول NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
المكان: يتم استبدال ORG وENV وPORT# بالقيم الفعلية.
- ابحث عن أي أخطاء
502
تتضمّن رمز الخطأprotocol.http.ResponseWithBody
خلال مدة معيّنة (إذا حدثت المشكلة في السابق) أو لمعرفة ما إذا كانت هناك أي طلبات لا تزال يتعذّر تنفيذها من خلال502
. إذا عثرت على أي أخطاء في
502
تتضمّن X-Apigee-fault-code الذي يتطابق مع قيمة X-Apigee-fault-code، حدِّد قيمة X-Apigee-fault-code.نموذج خطأ 502 من سجل وصول NGINX:
يحتوي إدخال النموذج أعلاه من سجلّ وصول NGINX على القيم التالية للسمة X- Apigee-error-code وX-Apigee-error-source:
عناوين الاستجابة القيمة X-Apigee-fault-code protocol.http.ResponseWithBody
X-Apigee-fault-source target
- يُرجى العِلم أنّ قيمتَي X-Apigee-fault-code وX-Apigee-fault-code هما
protocol.http.ResponseWithBody
وtarget
على التوالي. يشير هذا إلى أنّ الخطأ حدث لأنّ خادم الخلفية أرسل رمز الحالة204 No Content
أو205 Reset Content
مع نص الاستجابة و/أو أحد العناوين المذكورة في الأسباب المحتملة.
السبب: نص الاستجابة أو العناوين ذات الاستجابة 204 من خادم الخلفية
التشخيص
- حدِّد رمز الخطأ ومصدر الخطأ للخطأ الذي يتم رصده باستخدام مراقبة واجهة برمجة التطبيقات أو أداة التتبُّع أو سجلات الوصول إلى NGINX كما هو موضّح في خطوات التشخيص الشائعة.
- إذا كان رمز الخطأ
protocol.http.ResponseWithBody
وكانت القيمةtarget
لـ مصدر الخطأ، يشير ذلك إلى أنّ خادم الخلفية قد استجاب برمز حالة204 No Content
أو205 Reset Content
بنص الاستجابة و/أو أحد العناوين المذكورة في الأسباب المحتملة. للتحقّق مما إذا كان الخادم الخلفي قد أرسل نصًا حمولة للاستجابة و/أو عنوانًا واحدًا أو أكثر من العناوين المذكورة في الأسباب المحتملة، يمكنك تنفيذ الخطوات التالية:
إذا كنت من مستخدمي Public Cloud، وكان بإمكانك تقديم طلب البيانات نفسه من واجهة برمجة التطبيقات إلى الخادم الخلفي مباشرةً من أي من أنظمتك.
- إذا كنت مستخدمًا خاصًا في السحابة الإلكترونية، يمكنك إذن إرسال طلب البيانات نفسه من واجهة برمجة التطبيقات إلى الخادم الخلفي مباشرةً من أحد معالجي الرسائل المرتبطين بالمؤسسة والبيئة التي يتم فيها ملاحظة الخطأ.
راجِع الاستجابة التي تم تلقّيها من الخادم الخلفي وتحقَّق من أنّها تحتوي على نص حمولة الاستجابة و/أو عنوان واحد أو أكثر من العناوين المذكورة أعلاه. إذا كانت الإجابة بنعم، إذًا هو سبب هذا الخطأ.
النموذج الأول
النموذج 1: استجابة خادم الخلفية 204 مع عنوان ترميز المحتوى
curl -v "https://BACKEND_SERVER_HOST_NAME/PATH" -H "HEADER: VALUE" -X HTTP_REQUEST_METHOD
… < HTTP/1.1 204 No Content
< Content-Encoding: gzip
< Date: Tue, 31 Jul 2021 21:41:13 GMT < Connection: keep-aliveفي هذا النموذج، استجاب خادم الخلفية برمز الحالة
204 No Content
وContent-Encoding: gzip
.النموذج الثاني
النموذج الثاني: استجابة خادم الخلفية 204 مع عنوان طول المحتوى
curl -v "https://BACKEND_SERVER_HOST_NAME/PATH" -H "HEADER: VALUE" -X HTTP_REQUEST_METHOD
… < HTTP/1.1 204 No Content
< Content-Length: 48
< Date: Tue, 31 Jul 2021 21:41:13 GMT < Connection: keep-aliveفي هذا النموذج، استجاب خادم الخلفية برمز الحالة
204 No Content
وContent-Length: 48
.النموذج الثالث
النموذج رقم 3: استجابة خادم الخلفية 205 مع نص الاستجابة
curl -v "https://BACKEND_SERVER_HOST_NAME/PATH" -H "HEADER: VALUE" -X HTTP_REQUEST_METHOD
… < HTTP/1.1 205 Reset Content < Date: Sat, 31 Jul 2021 17:14:09 GMT < Content-Length: 12 < Content-Type: text/plain; charset=utf-8 < * Connection #0 to host X.X.X.X left intact
This is a sample Response
في هذا النموذج، استجاب خادم الخلفية برمز الحالة
205 Reset Content
مع نص الاستجابةThis is a sample Response.
.- في كل الأمثلة المذكورة أعلاه، أرسل خادم الخلفية رمز الحالة
204 No Content
أو205 Reset Content
مع نص الاستجابة و/أو أحد العناوين المذكورة في الأسباب المحتملة. - لذلك، أرسل Apigee Edge رمز الحالة
502 Bad Gateway
مع رمز الخطأprotocol.http.ResponseWithBody
.
درجة الدقّة
تأكَّد من التزام الخادم الخلفي دائمًا بالمواصفات
RFC 7231، الفقرة 6.3.6: 205 إعادة ضبط المحتوى، عند إرسال الاستجابة 204 No Content
أو 205 Reset Content
إلى Apigee Edge. وهذا يعني أنّه يجب ألا يرسل الخادم الخلفي ما يلي كجزء من استجابة 204 No Content
أو 205 Reset Content
:
- نص حمولة الاستجابة
- وأيّ من العناوين التالية:
Content-Length
Content-Encoding
Transfer-Encoding
المواصفات
يستجيب Apigee Edge برمز الحالة 502 Bad Gateway
ورمز الخطأ
protocol.http.ResponseWithBody
إذا كان خادم الخلفية يرسل استجابة 204 No Content
أو 205 Reset Content
ولكنه لا يلتزم بمواصفات RFC التالية:
المواصفات |
---|
RFC 7231، القسم 6.3.5: 204 بلا محتوى |
RFC 7231، الفقرة 6.3.6: 205 إعادة ضبط المحتوى |
نقاط رئيسية يجب ملاحظتها
والحلّ المُقترَح هو إصلاح خادم الخلفية لإرسال رمز الحالة 204 No Content
و205 Reset Content
بدون نص الاستجابة وأيّ من
العناوين - Content-Length
وContent-Encoding
وTransfer-Encoding
والتقيّد بالمواصفات
RFC 7231، القسم 6.3.5: 204 بلا محتوى و
RFC 7231، القسم 6.3.6: 205 إعادة ضبط المحتوى.
إذا كنت لا تزال بحاجة إلى أي مساعدة من فريق دعم Apigee، يُرجى الانتقال إلى ضرورة جمع معلومات التشخيص.
ضرورة جمع معلومات التشخيص
اجمع معلومات التشخيص التالية، ثم تواصَل مع فريق دعم Apigee Edge:
إذا كنت من مستخدمي Cloud Cloud، يُرجى تقديم المعلومات التالية:
- اسم المؤسسة
- اسم البيئة
- اسم الخادم الوكيل لواجهة برمجة التطبيقات
- أكمِل أمر
curl
المستخدَم لإعادة إظهار الخطأ502
. - ملف التتبُّع الخاص بطلبات واجهة برمجة التطبيقات
إذا كنت مستخدم 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