502 เกตเวย์ไม่ถูกต้อง - DecompressionFailureAtResponse

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

ลักษณะปัญหา

แอปพลิเคชันไคลเอ็นต์จะได้รับรหัสสถานะ HTTP 502 Bad Gateway พร้อมรหัสข้อผิดพลาด messaging.adaptors.http.flow.DecompressionFailureAtResponse เป็นการตอบกลับการเรียก API

ข้อความแสดงข้อผิดพลาด

แอปพลิเคชันไคลเอ็นต์จะได้รับโค้ดตอบกลับต่อไปนี้

HTTP/1.1 502 Bad Gateway

นอกจากนี้ คุณอาจเห็นข้อความแสดงข้อผิดพลาดที่คล้ายกับข้อความที่แสดงด้านล่าง

{
   "fault":{
      "faultstring":"Decompression failure at response",
      "detail":{
         "errorcode":"messaging.adaptors.http.flow.DecompressionFailureAtResponse"
      }
   }
}

สาเหตุที่เป็นไปได้

ข้อผิดพลาดนี้จะเกิดขึ้นในกรณีต่อไปนี้เท่านั้น

  • การเข้ารหัสที่ระบุในส่วนหัวการตอบกลับ HTTP (จากเซิร์ฟเวอร์แบ็กเอนด์/เป้าหมาย) Content-Encoding ใช้ได้และ รองรับโดย Apigee Edge
  • แต่

  • รูปแบบเพย์โหลดที่แบ็กเอนด์/เซิร์ฟเวอร์เป้าหมายส่งเป็นส่วนหนึ่งของการตอบกลับ HTTP ไม่ตรงกับ รูปแบบการเข้ารหัสที่ระบุในส่วนหัว Content-Encoding

เนื่องจาก Apigee Edge ถอดรหัสเพย์โหลดโดยใช้การเข้ารหัสที่ระบุไม่สำเร็จ เนื่องจากรูปแบบของเพย์โหลดไม่ได้อยู่ในรูปแบบเดียวกับการเข้ารหัสที่ระบุในส่วนหัว Content-Encoding

ต่อไปนี้คือตัวอย่างค่า Content-Encodingที่รองรับและวิธีที่ Apigee Edge คาดหวังว่าการแสดงเพย์โหลดจะเป็นในกรณีเหล่านั้น

สถานการณ์ Content-Encoding การแสดงเพย์โหลด
การเข้ารหัสแบบเดี่ยว gzip

รูปแบบ Unix gzip

ดู รูปแบบ GZIP ของ RFC1952

การเข้ารหัสแบบเดี่ยว deflate

รูปแบบนี้ใช้โครงสร้าง zlib กับอัลกอริทึมการบีบอัด Deflate

ดู RFC1950 และ RFC1951.

การเข้ารหัสหลายรายการ

การเข้ารหัสหลายรายการ

ตัวอย่างเช่น ในกรณีที่เข้ารหัส 2 ครั้ง อาจเป็นดังนี้

  • gzip, deflate
  • gzip, gzip
  • deflate, gzip
  • deflate, deflate
การเข้ารหัสหลายรายการที่ใช้กับเพย์โหลดตามลำดับที่ปรากฏในส่วนหัว

สาเหตุที่เป็นไปได้ของข้อผิดพลาดนี้มีดังนี้

สาเหตุ คำอธิบาย วิธีการแก้ปัญหาที่ใช้ได้กับ
รูปแบบเพย์โหลดการตอบกลับไม่ตรงกับการเข้ารหัสเนื้อหา รูปแบบของเพย์โหลดการตอบกลับที่ส่งโดยเซิร์ฟเวอร์แบ็กเอนด์/เป้าหมายไม่ได้เข้ารหัสหรือไม่ตรงกับการเข้ารหัสที่ระบุในส่วนหัว Content-Encoding ผู้ใช้ Edge Public และ Private Cloud

ขั้นตอนการวินิจฉัยที่พบบ่อย

ใช้เครื่องมือ/เทคนิคอย่างใดอย่างหนึ่งต่อไปนี้เพื่อวินิจฉัยข้อผิดพลาดนี้

การตรวจสอบ API

วิธีวินิจฉัยข้อผิดพลาดโดยใช้การตรวจสอบ API

  1. ลงชื่อเข้าใช้ UI ของ Apigee Edge ในฐานะผู้ใช้ที่มี บทบาทที่เหมาะสม
  2. เปลี่ยนไปใช้องค์กรที่คุณต้องการตรวจสอบปัญหา

  3. ไปที่หน้าวิเคราะห์ > การตรวจสอบ API > ตรวจสอบ
  4. เลือกกรอบเวลาที่เฉพาะเจาะจงซึ่งคุณพบข้อผิดพลาด
  5. ตรวจสอบว่าได้ตั้งค่าตัวกรองพร็อกซีเป็นทั้งหมด
  6. พล็อตรหัสข้อบกพร่องเทียบกับเวลา
  7. เลือกเซลล์ที่มีรหัสข้อบกพร่อง messaging.adaptors.http.flow.DecompressionFailureAtResponse ดังที่ แสดงด้านล่าง

    ( ดูรูปภาพขนาดใหญ่ขึ้น)

  8. ข้อมูลเกี่ยวกับรหัสข้อบกพร่อง messaging.adaptors.http.flow.DecompressionFailureAtResponse จะแสดงดังที่แสดงด้านล่าง

    ( ดูรูปภาพขนาดใหญ่ขึ้น)

  9. คลิกดูบันทึก แล้วขยายแถวที่ล้มเหลวเนื่องจากข้อผิดพลาด 502

    ( ดูรูปภาพขนาดใหญ่ขึ้น)

  10. จากหน้าต่างบันทึก ให้จดรายละเอียดต่อไปนี้
    • รหัสสถานะ: 502
    • แหล่งที่มาของข้อผิดพลาด: target
    • รหัสข้อบกพร่อง: messaging.adaptors.http.flow.DecompressionFailureAtResponse
  11. หาก Fault Source มีค่า target แสดงว่า รูปแบบเพย์โหลดการตอบกลับไม่ตรงกับ การเข้ารหัสที่รองรับที่ระบุในส่วนหัวการตอบกลับของเซิร์ฟเวอร์แบ็กเอนด์ Content-Encoding

เครื่องมือติดตาม

วิธีวิเคราะห์ข้อผิดพลาดโดยใช้เครื่องมือติดตาม

  1. เปิดใช้เซสชันการติดตาม และรายการใดรายการหนึ่งต่อไปนี้
    1. รอให้เกิดข้อผิดพลาด 502 Bad Gateway หรือ
    2. หากทำให้เกิดปัญหาซ้ำได้ ให้ทำการเรียก API และทำซ้ำ 502 Bad Gateway
  2. ตรวจสอบว่าได้เปิดใช้แสดง FlowInfo ทั้งหมดแล้ว

  3. เลือกคำตอบที่ล้มเหลวรายการใดรายการหนึ่ง แล้วตรวจสอบการติดตาม
  4. ไปยังส่วนต่างๆ ของการติดตาม และค้นหาตำแหน่งที่เกิดข้อผิดพลาด
  5. โดยปกติแล้ว คุณจะเห็นข้อผิดพลาดในโฟลว์หลังจากเฟสได้รับคำตอบจากเซิร์ฟเวอร์เป้าหมาย ดังที่แสดงด้านล่าง

    ( ดูรูปภาพขนาดใหญ่ขึ้น)

  6. จดค่าของพร็อพเพอร์ตี้จากร่องรอย

    • Content-Encoding: gzip
    • เนื้อหาการตอบกลับ: {"fault":{"faultstring":"Decompression failure at response","detail":{"errorcode":"messaging.adaptors.http.flow.DecompressionFailureAtResponse"}}}
  7. ไปที่ระยะข้อผิดพลาดหลังจากระยะได้รับการตอบกลับจากเซิร์ฟเวอร์เป้าหมาย ทันที

    ( ดูรูปภาพขนาดใหญ่ขึ้น)

    โปรดทราบพร็อพเพอร์ตี้ต่อไปนี้

    • ข้อผิดพลาด: Decompression failure at response
    • error.class: com.apigee.errors.http.server.BadGateway
    • error.cause: Not in GZIP format

      error.cause ระบุว่าเพย์โหลดการตอบกลับไม่ได้อยู่ในรูปแบบ GZIP ซึ่งหมายความว่า Apigee Edge คาดหวังว่าเพย์โหลดการตอบกลับจะอยู่ในรูปแบบ GZIP ตามที่ระบุไว้ในส่วนหัว Content-Encoding (กำหนดไว้ในขั้นตอนก่อนหน้า) ดังนั้น Apigee Edge จึงไม่สามารถคลายการบีบอัดเพย์โหลดโดยใช้ gzip และจะแสดงข้อผิดพลาด Decompression failure at response

    โปรดทราบว่าการตอบกลับจากเซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์คือ 200 ในกรณีนี้ แต่แอปพลิเคชันไคลเอ็นต์จะได้รับการตอบกลับ 502 เนื่องจาก Apigee Edge ส่งคืนข้อผิดพลาด

  8. ไปที่ระยะส่งการตอบกลับให้ไคลเอ็นต์แล้วใน Trace แล้วคลิก

    ( ดูรูปภาพขนาดใหญ่ขึ้น)

    โปรดทราบรายละเอียดต่อไปนี้จากร่องรอย

    • รหัสสถานะ: 502 Bad Gateway
    • เนื้อหาข้อผิดพลาด: {"fault":{"faultstring":"Decompression failure at response","detail":{"errorcode":"messaging.adaptors.http.flow.DecompressionFailureAtResponse"}}}
  9. ไปที่เฟส AX (บันทึกข้อมูลวิเคราะห์) ในการติดตาม แล้วคลิก

  10. เลื่อนลงไปที่ส่วนรายละเอียดระยะ ส่วนหัวของข้อผิดพลาด และ กำหนดค่าของ X-Apigee-fault-code และ X-Apigee-fault-source ตามที่แสดงด้านล่าง

    ( ดูรูปภาพขนาดใหญ่ขึ้น)

  11. คุณจะเห็นค่าของ X-Apigee-fault-code และ X-Apigee-fault-source เป็น messaging.adaptors.http.flow.DecompressionFailureAtResponse และ target ซึ่งบ่งชี้ว่ารูปแบบเพย์โหลดการตอบกลับไม่ตรงกับ การเข้ารหัสที่ระบุไว้ในส่วนหัว Content-Encoding
    ส่วนหัวการตอบกลับ ค่า
    X-Apigee-fault-code messaging.adaptors.http.flow.DecompressionFailureAtResponse
    X-Apigee-fault-source target

NGINX

วิธีวินิจฉัยข้อผิดพลาดโดยใช้บันทึกการเข้าถึง NGINX

  1. หากเป็นผู้ใช้ Private Cloud คุณจะใช้บันทึกการเข้าถึง NGINX เพื่อ ระบุข้อมูลสำคัญเกี่ยวกับข้อผิดพลาด HTTP 502 ได้
  2. ตรวจสอบบันทึกการเข้าถึง NGINX

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    ตำแหน่ง: ORG, ENV และ PORT# จะถูกแทนที่ด้วยค่าจริง

  3. ค้นหาเพื่อดูว่ามี502ข้อผิดพลาดในช่วงระยะเวลาที่เฉพาะเจาะจง (หากปัญหาเกิดขึ้นในอดีต) หรือมีการตอบกลับที่ยังคงล้มเหลวด้วย 502หรือไม่
  4. หากพบข้อผิดพลาด 502 ที่มี X-Apigee-fault-code ซึ่งตรงกับค่าของ messaging.adaptors.http.flow.DecompressionFailureAtResponse ให้พิจารณาค่าของ X-Apigee-fault-source

    ตัวอย่างข้อผิดพลาด 502 จากบันทึกการเข้าถึงของ NGINX

    รายการตัวอย่างข้างต้นจากบันทึกการเข้าถึง NGINX มีค่าต่อไปนี้สำหรับ X-Apigee-fault-code และ X-Apigee-fault-source:

    ส่วนหัวการตอบกลับ ค่า
    X-Apigee-fault-code messaging.adaptors.http.flow.DecompressionFailureAtResponse
    X-Apigee-fault-source target

สาเหตุ: รูปแบบเพย์โหลดการตอบกลับไม่ตรงกับ Content-Encoding

โดยค่าเริ่มต้น Apigee Edge จะคลายการบีบอัดเพย์โหลดเสมอหากส่วนหัวการตอบกลับ Content-Encoding มี การเข้ารหัสที่รองรับที่ถูกต้อง ดังนั้น คาดว่ารูปแบบของเพย์โหลดการตอบกลับ ควรตรงกันกับการเข้ารหัสที่ระบุในส่วนหัวการตอบกลับ Content-Encoding หากข้อมูลไม่ตรงกัน คุณจะได้รับข้อผิดพลาดนี้

การวินิจฉัย

  1. ระบุรหัสข้อผิดพลาดและแหล่งที่มาของข้อผิดพลาดสำหรับข้อผิดพลาดที่สังเกตได้โดยใช้ API การตรวจสอบ เครื่องมือติดตาม หรือบันทึกการเข้าถึง NGINX ตามที่อธิบายไว้ใน ขั้นตอนการวินิจฉัยทั่วไป
  2. หากรหัสข้อผิดพลาดคือ messaging.adaptors.http.flow.DecompressionFailureAtResponse และแหล่งที่มาของข้อผิดพลาดมีค่าเป็น target แสดงว่า รูปแบบของเพย์โหลดการตอบกลับที่ส่งโดยเซิร์ฟเวอร์แบ็กเอนด์/เป้าหมายไม่ตรงกับ การเข้ารหัสที่รองรับที่ระบุในส่วนหัวการตอบกลับ Content-Encoding
  3. คุณสามารถระบุความไม่ตรงกันเป็นส่วนหนึ่งของการตอบกลับ HTTP โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้

    ข้อความแสดงข้อผิดพลาด

    วิธียืนยันโดยใช้ข้อความแสดงข้อผิดพลาด

    1. หากคุณมีสิทธิ์เข้าถึงข้อความแสดงข้อผิดพลาดทั้งหมดที่ได้รับจาก Apigee Edge ให้ ดูfaultstring

      ตัวอย่างข้อความแสดงข้อผิดพลาด:

      "faultstring":"Decompression failure at response"
    2. ในข้อความแสดงข้อผิดพลาดข้างต้น จะแสดง "Decompression failure at response" ซึ่งหมายความว่าการตอบกลับ ไม่สามารถคลายการบีบอัดโดยใช้การเข้ารหัสที่ระบุในส่วนหัว Content-Encoding

    Trace

    วิธีตรวจสอบโดยใช้การติดตาม

    1. กำหนด Content-Type และ error.cause โดยใช้การติดตาม ตามที่อธิบายไว้ในขั้นตอนการวินิจฉัยทั่วไป
    2. ค่าจากตัวอย่างการติดตามมีดังนี้

      • Content-Encoding: gzip
      • error.cause: Not in GZIP format

      ค่าในส่วนหัวการตอบกลับ Content-Encoding คือ gzip แต่เพย์โหลดการตอบกลับไม่ได้อยู่ในรูปแบบ GZIP (ตามที่ระบุโดย error.cause) ดังนั้น Apigee Edge จึงตอบกลับด้วย 502 Bad Gateway และรหัสข้อผิดพลาด messaging.adaptors.http.flow.DecompressionFailureAtResponse

    คำขอจริง

    วิธีตรวจสอบโดยใช้คำขอจริง

    หากคุณมีสิทธิ์เข้าถึงคำขอจริงที่ส่งไปยังแอปพลิเคชันเซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์ ให้ทำตามขั้นตอนต่อไปนี้

    1. หากคุณเป็นผู้ใช้ระบบคลาวด์สาธารณะ/ระบบคลาวด์ส่วนตัว ให้ส่งคำขอ ไปยังเซิร์ฟเวอร์แบ็กเอนด์โดยตรงจากเซิร์ฟเวอร์แบ็กเอนด์เองหรือเครื่องอื่นๆ ที่คุณได้รับอนุญาตให้ส่งคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์
    2. หากเป็นผู้ใช้ Private Cloud คุณยังส่งคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์จากตัวประมวลผลข้อความตัวใดตัวหนึ่งได้ด้วย
    3. ตรวจสอบการตอบกลับที่เซิร์ฟเวอร์แบ็กเอนด์ส่งมาและพิจารณาค่า ที่ส่งในส่วนหัวการตอบกลับ Content-Encoding.
    4. กำหนดรูปแบบของเพย์โหลดที่ส่งเป็นส่วนหนึ่งของคำขอ
    5. หากค่าของส่วนหัว Content-Encoding อยู่ในรายการ การเข้ารหัสที่รองรับ แต่รูปแบบของเพย์โหลดการตอบกลับ ไม่ตรงกับการเข้ารหัสที่ระบุในส่วนหัว Content-Encoding แสดงว่านั่นคือสาเหตุของปัญหา

      ตัวอย่าง:

      curl -v https://HOSTALIAS/test
      

      ***trimmed***
      >
      < HTTP/1.1 200 OK
      < Accept-Ranges: bytes
      < Content-Encoding: gzip
      < Date: Mon, 02 Aug 2021 08:17:35 GMT
      < Transfer-Encoding: chunked
      <
      < response_payload.zip Response Body(not in GZIP format)>
      

      การตอบกลับตัวอย่างข้างต้นจะส่งค่า gzip ไปยังส่วนหัว Content-Encoding ซึ่งเป็น การเข้ารหัสที่รองรับใน Apigee Edge แต่ระบบจะส่ง response_payload.zip เป็นไฟล์ ZIP ดังนั้น การตอบกลับนี้ จึงล้มเหลวโดยมีข้อผิดพลาด 502 Bad Gateway พร้อมรหัสข้อผิดพลาด messaging.adaptors.http.flow.DecompressionFailureAtResponse

    บันทึกของ Message Processor

    วิธีตรวจสอบความถูกต้องโดยใช้บันทึกของ Message Processor

    หากเป็นผู้ใช้ Private Cloud คุณจะใช้บันทึกของ Message Processor เพื่อระบุข้อมูลสำคัญเกี่ยวกับข้อผิดพลาดของ HTTP 502 ได้

    1. ตรวจสอบบันทึกของ Message Processor

      /opt/apigee/var/log/edge-message-processor/logs/system.log

    2. ค้นหาเพื่อดูว่ามี502ข้อผิดพลาดในระยะเวลาที่เฉพาะเจาะจงหรือไม่ (หากปัญหาเกิดขึ้นในอดีต) หรือมีคำตอบที่ยังคงล้มเหลวด้วย 502หรือไม่ คุณอาจใช้สตริงการค้นหาต่อไปนี้

      grep -ri "ZipException"
      
    3. คุณจะเห็นบรรทัดจาก system.log ที่คล้ายกับบรรทัดต่อไปนี้

      สถานการณ์ที่ 1

      สถานการณ์ที่ 1: เมื่อการตอบกลับของ API มีส่วนหัว Content-Encoding: gzip

      2021-08-02 06:50:25,433  NIOThread@2 ERROR HTTP.CLIENT -
      HTTPClient$Context.onInputException() :  ClientInputChannel(ClientChannel[Connected:
      Remote:3.8.1.1:9000 Local:10.0.115.32:41298]@38140 useCount=1 bytesRead=0
      bytesWritten=203 age=469ms  lastIO=0ms  isOpen=true).onExceptionRead exception: {}
      java.util.zip.ZipException: Not in GZIP format
      ---trimmed--
      2021-08-02 06:50:25,433  NIOThread@2 INFO  HTTP.CLIENT -
      HTTPClient$Context.logContextDetails() : Request details : host=null
      path=/folder/testFile method=GET. Channel details : Bytes read=0
      2021-08-02 06:50:25,434  NIOThread@2 ERROR ADAPTORS.HTTP.FLOW -
      AbstractResponseListener.onException() : AbstractResponseListener.onError(HTTPResponse@4806fdab, Not in GZIP format)
      2021-08-02 06:50:25,434  NIOThread@2 INFO  HTTP.SERVICE -
      ExceptionHandler.handleException() : Exception
      java.util.zip.ZipException: Not in GZIP format
      occurred while writing to channel null
      2021-08-02 06:50:25,434  NIOThread@2 INFO  HTTP.SERVICE -
      ExceptionHandler.handleException() : Exception trace:
      java.util.zip.ZipException: Not in GZIP format
      

      บรรทัด java.util.zip.ZipException: Not in GZIP format ในข้อความแสดงข้อผิดพลาดข้างต้นระบุว่าไม่ได้ส่งเพย์โหลดการตอบกลับ ในรูปแบบ GZIP แม้ว่าจะระบุ Content-Encoding เป็น gzip ก็ตาม ดังนั้น Apigee Edge จึงจะส่งข้อยกเว้นและ แสดงรหัสสถานะ 502 พร้อมรหัสข้อผิดพลาด messaging.adaptors.http.flow.DecompressionFailureAtResponse ไปยังแอปพลิเคชันไคลเอ็นต์

      สถานการณ์ที่ 2

      สถานการณ์ #2: เมื่อการตอบกลับของ API มีส่วนหัว Content-Encoding: deflate

      2021-08-02 06:35:21,215  NIOThread@0 ERROR HTTP.CLIENT -
      HTTPClient$Context.onInputException() :  ClientInputChannel(ClientChannel[Connected:
      Remote:3.8.1.1:9000 Local:192.168.194.140:35224]@36014 useCount=1 bytesRead=0
      bytesWritten=202 age=439ms  lastIO=2ms  isOpen=true).onExceptionRead exception: {}
      java.util.zip.ZipException: incorrect header check
      ---trimmed----
      Caused by:
      java.util.zip.DataFormatException: incorrect header check
      ---trimmed---
      2021-08-02 06:35:21,215  NIOThread@0 INFO  HTTP.CLIENT -
      HTTPClient$Context.logContextDetails() : Request details :
      host=null path=/folder/testFile method=GET. Channel details : Bytes read=0
      2021-08-02 06:35:21,216  NIOThread@0 ERROR ADAPTORS.HTTP.FLOW -
      AbstractResponseListener.onException() : AbstractResponseListener.onError(HTTPResponse@3966e277,
      incorrect header check)
      2021-08-02 06:35:21,216  NIOThread@0 INFO  HTTP.SERVICE -
      ExceptionHandler.handleException() : Exception
      java.util.zip.ZipException: incorrect header check occurred while writing to channel null
      2021-08-02 06:35:21,217  NIOThread@0 INFO  HTTP.SERVICE -
      ExceptionHandler.handleException() : Exception trace:
      java.util.zip.ZipException: incorrect header check
      
      

      บรรทัด java.util.zip.ZipException: incorrect header check และ Caused by: java.util.zip.DataFormatException: incorrect header check ในข้อความแสดงข้อผิดพลาดข้างต้นบ่งชี้ว่าไม่ได้ส่งเพย์โหลดการตอบกลับใน รูปแบบ Deflate และไม่ตรงกับการเข้ารหัสที่ระบุใน ส่วนหัว Content-Encoding ของ Deflate ดังนั้น Apigee Edge จึงทิ้งข้อยกเว้นและแสดงรหัสสถานะ 502 พร้อม รหัสข้อผิดพลาด messaging.adaptors.http.flow.DecompressionFailureAtResponse ไปยังแอปพลิเคชันไคลเอ็นต์

ความละเอียด

  1. หากไม่จำเป็นต้องใช้เพย์โหลดการตอบกลับที่บีบอัดในโฟลว์พร็อกซี API ใน Apigee Edge และในเซิร์ฟเวอร์แบ็กเอนด์ ให้อย่าส่งส่วนหัว Content-Encoding หากจำเป็นต้องบีบอัดเพย์โหลดการตอบกลับ ให้ไปที่ขั้นตอนที่ 2
  2. หากจำเป็นต้องบีบอัดเพย์โหลดการตอบสนอง ให้ตรวจสอบว่าเซิร์ฟเวอร์แบ็กเอนด์ ส่งข้อมูลต่อไปนี้เสมอ
    • การเข้ารหัสที่รองรับเป็นค่าสำหรับส่วนหัว Content-Encoding ในการตอบกลับ
    • เพย์โหลดการตอบกลับในรูปแบบที่รองรับไปยัง Apigee Edge จะตรงกับรูปแบบการเข้ารหัสที่ระบุในส่วนหัว Content-Encoding
  3. ในตัวอย่างที่กล่าวถึงข้างต้น เพย์โหลดการตอบกลับอยู่ในรูปแบบ ZIP แต่ส่วนหัวการตอบกลับ ระบุ Content-Encoding: gzip คุณแก้ไขปัญหานี้ได้โดยส่งส่วนหัวการตอบกลับเป็น Content-Encoding: gzip และเพย์โหลดการตอบกลับในรูปแบบ gzip
    curl -v https://HOSTALIAS/v1/test
    
    >
    < HTTP/1.1 200 OK
    < Accept-Ranges: bytes
    < Content-Encoding: gzip
    < Date: Mon, 02 Aug 2021 08:17:35 GMT
    < Transfer-Encoding: chunked
    <
    < response_payload.gz Response Body(in GZIP format)>
    

ข้อมูลจำเพาะ

Apigee Edge จะตอบกลับด้วยรหัสสถานะ 502 Bad Gateway พร้อมรหัสข้อผิดพลาด messaging.adaptors.http.flow.DecompressionFailureAtResponse ตามข้อกำหนด RFC ต่อไปนี้

ข้อมูลจำเพาะ
RFC 7231, ส่วน 6.5.1
RFC 7231, ส่วน 3.1.2.2

หากยังต้องการความช่วยเหลือจากทีมสนับสนุนของ Apigee โปรดไปที่ ต้องรวบรวมข้อมูลการวินิจฉัย

ต้องรวบรวมข้อมูลการวินิจฉัย

รวบรวมข้อมูลการวินิจฉัยต่อไปนี้ แล้วติดต่อทีมสนับสนุน Apigee Edge

หากคุณเป็นผู้ใช้ระบบคลาวด์สาธารณะ โปรดระบุข้อมูลต่อไปนี้

  • ชื่อองค์กร
  • ชื่อสภาพแวดล้อม
  • ชื่อพร็อกซี API
  • คำสั่ง curl ที่สมบูรณ์ซึ่งใช้ในการสร้างข้อผิดพลาด 502 ซ้ำ
  • ไฟล์การติดตามสำหรับการตอบกลับจาก API

หากคุณเป็นผู้ใช้ Private Cloud โปรดระบุข้อมูลต่อไปนี้

  • ข้อความแสดงข้อผิดพลาดทั้งหมดที่พบสำหรับการตอบกลับที่ไม่สำเร็จ
  • ชื่อสภาพแวดล้อม
  • แพ็กเกจพร็อกซี API
  • ไฟล์การติดตามสำหรับการตอบกลับจาก API
  • บันทึกการเข้าถึง NGINX /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    โดยที่ ORG, ENV และ PORT# จะแทนที่ด้วย ค่าจริง

  • บันทึกของระบบ Message Processor /opt/apigee/var/log/edge-message-processor/logs/system.log