شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید . اطلاعات
علامت
برنامه سرویس گیرنده کد وضعیت HTTP 502 Bad Gateway را با protocol.http.ResponseWithBody کد خطا دریافت می کند.http.ResponseWithBody به عنوان پاسخی برای تماس های API.
پیغام خطا
برنامه مشتری کد پاسخ زیر را دریافت می کند:
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 No Content و RFC 7231، بخش 6.3.6: 205 Reset Content ، انتظار می رود هیچ محتوای اضافی به عنوان بخشی از بدنه بار پاسخ با کد وضعیت 204 No Content ارسال نشود. 204 No Content یا 205 Reset Content توسط سرور مبدا. سرصفحههای پاسخ مانند Content-Length ، Content-Encoding یا Transfer-Encoding اندازه، نوع یا قالب بار پاسخ را نشان میدهند.
بنابراین، Apigee Edge یک کد وضعیت 502 Bad Gateway را با protocol.http.ResponseWithBody کد خطا.http.ResponseWithBody در شرایط زیر به مشتری برمیگرداند:
| کد وضعیت از سرور باطن | ||
|---|---|---|
| پاسخ از سرور باطن شامل | 204 بدون محتوا | 205 بازنشانی محتوا |
| بدنه پاسخگویی | خطا | خطا |
هدر (تنظیم به غیر صفر) | خطا | خطا |
(روی کدگذاری پشتیبانی شده در Apigee Edge تنظیم کنید) | خطا | بدون خطا |
Transfer-Encoding | خطا | خطا |
در اینجا دلایل احتمالی این خطا وجود دارد:
| علت | توضیحات | دستورالعمل های عیب یابی قابل اجرا برای |
|---|---|---|
| بدنه پاسخ یا هدرها با پاسخ 204 از سرور باطن | سرور Backend یک پاسخ 204 No Content یا 205 Reset Content با بدنه پاسخ و/یا یک یا چند سرصفحه Content-Type ، Content-Encoding یا Transfer-Encoding ارسال می کند. | کاربران Edge Public و Private Cloud |
مراحل تشخیص رایج
برای تشخیص این خطا از یکی از ابزارها/تکنیک های زیر استفاده کنید:
مانیتورینگ API
برای تشخیص خطا با استفاده از API Monitoring:
- به عنوان کاربر با نقش مناسب وارد رابط کاربری Apigee Edge شوید .
به سازمانی که میخواهید در آن موضوع را بررسی کنید بروید.

- به صفحه Analyze > API Monitoring > Investigate بروید.
- بازه زمانی خاصی را که در آن خطاها را مشاهده کرده اید انتخاب کنید.
- کد خطا را در برابر زمان ترسیم کنید.
مطابق شکل زیر سلولی را انتخاب کنید که دارای
protocol.http.ResponseWithBodyکد خطا باشد.http.ResponseWithBody:
اطلاعات مربوط به
protocol.http.ResponseWithBodyکد خطا را مشاهده خواهید کرد.http.ResponseWithBody مانند شکل زیر:
روی View logs کلیک کنید و ردیف درخواست ناموفق را گسترش دهید.

- از پنجره Logs به جزئیات زیر توجه کنید:
- کد وضعیت:
502 - منبع خطا:
target - کد خطا:
protocol.http.ResponseWithBody.
- کد وضعیت:
- اگر منبع خطا دارای مقدار
targetو کد خطا دارایprotocol.http.ResponseWithBodyمقدار باشد.http.ResponseWithBody، پس این نشان میدهد که خطا به این دلیل رخ داده است که سرور backend کد وضعیت204 No Contentیا205 Reset Contentبا بدنه پاسخ و/یا ارسال کرده است. یکی از سرفصل های ذکر شده در قسمت علل احتمالی .
ابزار ردیابی
برای تشخیص خطا با استفاده از ابزار Trace:
- جلسه ردیابی را فعال کنید و یا:
- منتظر بمانید تا خطای
502 Bad Gatewayرخ دهد. یا - اگر میتوانید مشکل را تکرار کنید، تماس API را برقرار کرده و خطای
502 Bad Gatewayرا تکرار کنید.
- منتظر بمانید تا خطای
اطمینان حاصل کنید که نمایش همه FlowInfos فعال است:

- یکی از درخواست های ناموفق را انتخاب کنید و ردیابی را بررسی کنید.
- در مراحل مختلف ردیابی پیمایش کنید و محل وقوع شکست را پیدا کنید.
شما معمولاً همانگونه که در زیر نشان داده شده است، دقیقاً پس از ارسال درخواست به سرور هدف، خطا را در خطای
flowinfoپیدا خواهید کرد:سناریوی شماره 1
سناریوی شماره 1: سرور Backend با کد وضعیت
204 No Contentحاوی بدنه پاسخ و/یا یکی از سرصفحه های فهرست شده در علل احتمالی پاسخ می دهد .
به مقادیر زیر از ردیابی توجه کنید:
- خطا:
Received 204 Response with message body - error.class:
com.apigee.rest.framework.BadGateway
سناریوی شماره 2
سناریوی شماره 2: سرور Backend با کد وضعیت
204 No Contentحاوی بدنه پاسخ و/یا یکی از سرصفحه های فهرست شده در علل احتمالی پاسخ می دهد.
به مقادیر زیر از ردیابی توجه کنید:
- خطا:
Received 205 Response with message body - error.class:
com.apigee.rest.framework.BadGateway
- خطا:
- به مرحله AX (Analytics Data Recorded) در Trace بروید و روی آن کلیک کنید.
به قسمت Phase Details ، Error Headers بروید و مقادیر X-Apigee-fault-code و X-Apigee-fault-source را مطابق شکل زیر تعیین کنید:

- توجه داشته باشید که مقادیر X-Apigee-fault-code و X-Apigee-fault-source به ترتیب
are protocol.http.ResponseWithBodyوtargetهستند. این نشان می دهد که خطا به این دلیل رخ داده است که سرور پشتیبان کد وضعیت204 No Contentیا205 Reset Contentبا بدنه پاسخ و/یا یکی از سرصفحه های ذکر شده در علل احتمالی ارسال کرده است.خطا ارزش X-Apigee-fault-code protocol.http.ResponseWithBodyX-Apigee-fault-source target
NGINX
برای تشخیص خطا با استفاده از گزارش های دسترسی NGINX:
- اگر کاربر Private Cloud هستید، می توانید از گزارش های دسترسی 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کد خطا وجود دارد.http.ResponseWithBody در طول یک مدت زمان مشخص (اگر مشکل در گذشته اتفاق افتاده باشد) یا اینکه آیا درخواست هایی هنوز با502شکست خورده است. اگر هر گونه خطای
502با کد X-Apigee-fault-code مطابق با مقدارprotocol.http.ResponseWithBodyپیدا کردید، سپس مقدار X-Apigee-fault-source را تعیین کنید.نمونه خطای 502 از گزارش دسترسی NGINX:

ورودی نمونه بالا از گزارش دسترسی NGINX دارای مقادیر زیر برای X-Apigee-fault-code و X-Apigee-fault-source است :
سرصفحه های پاسخ ارزش X-Apigee-fault-code protocol.http.ResponseWithBodyX-Apigee-fault-source target- توجه داشته باشید که مقادیر X-Apigee-fault-code و X-Apigee-fault-source به ترتیب
protocol.http.ResponseWithBodyوtargetهستند. این نشان می دهد که خطا به این دلیل رخ داده است که سرور پشتیبان کد وضعیت204 No Contentیا205 Reset Contentبا بدنه پاسخ و/یا یکی از سرصفحه های ذکر شده در علل احتمالی ارسال کرده است.
علت: بدنه پاسخ یا هدرها با پاسخ 204 از سرور باطن
تشخیص
- کد خطا و منبع خطا را برای خطای مشاهده شده با استفاده از مانیتورینگ API، ابزار Trace، یا گزارش های دسترسی NGINX همانطور که در مراحل تشخیص رایج توضیح داده شده است، تعیین کنید.
- اگر کد خطا
protocol.http.ResponseWithBodyاست.http.ResponseWithBody و منبع خطا دارای مقدارtargetاست، پس این نشان می دهد که سرور باطن با کد وضعیت204 No Contentیا205 Reset Contentبا بدنه پاسخ و/یا یکی از هدرهای ذکر شده پاسخ داده است. در علل احتمالی . برای تأیید اینکه آیا سرور پشتیبان واقعاً بدنه بار پاسخ و/یا یک یا چند سرصفحه ذکر شده در علل احتمالی را ارسال کرده است، میتوانید مراحل زیر را انجام دهید:
اگر کاربر Public Cloud هستید و میتوانید همان درخواست API را مستقیماً از هر یک از سیستمهای خود به سرور باطن ارسال کنید.
- اگر کاربر Private Cloud هستید، میتوانید همان درخواست API را مستقیماً از یکی از پردازشگرهای پیام مرتبط با سازمان و محیط خاصی که در آن خرابی مشاهده شده است، به سرور پشتیبان ارسال کنید.
پاسخ دریافت شده از سرور پشتیبان را بررسی کنید و بررسی کنید که حاوی یک بدنه بار پاسخ و/یا یک یا چند عنوان از هدرهای ذکر شده در بالا باشد. اگر بله، پس این دلیل این خطا است.
نمونه شماره 1
نمونه شماره 1: پاسخ سرور Backend 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پاسخ داد.نمونه شماره 2
نمونه شماره 2: پاسخ سرور Backend 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
نمونه شماره 3: پاسخ سرور Backend 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در این نمونه، سرور backend با کد وضعیت
205 Reset Contentبا بدنه پاسخ پاسخ دادThis is a sample Response.- در تمام مثالهای بالا، سرور باطن
204 No Contentیا کد وضعیت205 Reset Contentبا بدنه پاسخ و/یا یکی از هدرهای ذکر شده در علل احتمالی ارسال کرد. - بنابراین، Apigee Edge کد وضعیت
502 Bad Gatewayرا باprotocol.http.ResponseWithBodyکد خطا ارسال کرد.http.ResponseWithBody.
قطعنامه
هنگام ارسال پاسخ 204 No Content یا 205 Reset Content به Apigee Edge، اطمینان حاصل کنید که سرور Backend همیشه به مشخصات RFC 7231، بخش 6.3.6: 205 Reset Content پایبند باشد. یعنی سرور باطن نباید موارد زیر را به عنوان بخشی از پاسخ 204 No Content یا 205 Reset Content ارسال کند:
- بدنه بار پاسخگو
- و هر یک از هدرهای زیر:
-
Content-Length -
Content-Encoding -
Transfer-Encoding
-
مشخصات
Apigee Edge با کد وضعیت 502 Bad Gateway و protocol.http.ResponseWithBody کد خطا پاسخ می دهد.http.ResponseWithBody اگر سرور backend یک پاسخ 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 نیاز دارید، به Must collect information diagnostic بروید.
باید اطلاعات تشخیصی را جمع آوری کرد
اطلاعات تشخیصی زیر را جمع آوری کنید و سپس با پشتیبانی Apigee Edge تماس بگیرید:
اگر کاربر Public Cloud هستید، اطلاعات زیر را ارائه دهید:
- نام سازمان
- نام محیط زیست
- نام پروکسی API
- دستور کامل
curlکه برای بازتولید خطای502استفاده می شود - فایل ردیابی برای درخواست های API
اگر کاربر Private Cloud هستید، اطلاعات زیر را ارائه دهید:
- پیام خطای کامل برای درخواست های ناموفق مشاهده شد
- نام محیط زیست
- بسته پروکسی 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