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

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

ลักษณะปัญหา

แอปพลิเคชันไคลเอ็นต์ได้รับรหัสสถานะ 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

รูปแบบ gzip ของ Unix

ดู รูปแบบ RFC1952 GZIP

การเข้ารหัสรายการเดียว หดตัว

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

โปรดดู RFC1950 และ RFC1951.

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

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

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

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

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

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

ขั้นตอนการวินิจฉัยทั่วไป

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

การตรวจสอบ API

วิธีวินิจฉัยข้อผิดพลาดโดยใช้ API Monitoring

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

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

วิธีวินิจฉัยข้อผิดพลาดโดยใช้เครื่องมือติดตาม

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

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

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

  6. จดจำค่าของพร็อพเพอร์ตี้จากการติดตามดังนี้

    • การเข้ารหัสเนื้อหา: 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. ไปยังเฟส Response Sent to Client ในการติดตามแล้วคลิก

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

    สังเกตรายละเอียดต่อไปนี้จากการติดตาม

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

  10. เลื่อนลงไปที่ส่วน Phase Details, Error Headers และระบุค่าของ 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-code

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

สาเหตุ: รูปแบบเปย์โหลดการตอบกลับไม่ตรงกับการเข้ารหัสเนื้อหา

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

การวินิจฉัย

  1. กำหนด Fault Code และ Fault Source สำหรับข้อผิดพลาดที่พบโดยใช้ API Monitoring, เครื่องมือติดตาม หรือบันทึกการเข้าถึง 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 โดยใช้ Trace ตามที่อธิบายไว้ในขั้นตอนการวินิจฉัยทั่วไป
    2. ค่าจากการติดตามตัวอย่างมีดังนี้

      • การเข้ารหัสเนื้อหา: gzip
      • error.cause: Not in GZIP format

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

    คำขอจริง

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

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

    1. หากคุณเป็นผู้ใช้ Public Cloud/Private Cloud ให้ส่งคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์โดยตรงจากเซิร์ฟเวอร์แบ็กเอนด์เองหรือเครื่องอื่นที่คุณได้รับอนุญาตให้ส่งคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์
    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

    บันทึกตัวประมวลผลข้อความ

    วิธีตรวจสอบโดยใช้บันทึกตัวประมวลผลข้อความ

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

    1. ตรวจสอบบันทึกของตัวประมวลผลข้อความ

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

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

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

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

      สถานการณ์ที่ 1: เมื่อการตอบกลับของ API มีส่วนหัว Content-Encrypting: 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# ด้วยค่าจริง

  • บันทึกระบบของผู้ประมวลผลข้อความ /opt/apigee/var/log/edge-message-processor/logs/system.log