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

รูปแบบ Unix gzip

โปรดดู รูปแบบ RFC1952 GZIP

การเข้ารหัสเดี่ยว เสื่อม

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

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

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

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

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

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

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

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

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

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

การตรวจสอบ API

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

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

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

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

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

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

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

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

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

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

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

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

  3. เลือกการตอบกลับที่ไม่สำเร็จ 1 รายการและตรวจสอบการติดตาม
  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 ใน case; แต่แอปพลิเคชันไคลเอ็นต์จะได้รับ 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 Data Recorded) ในการติดตาม แล้วคลิกที่ตัวเลือก

  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-code

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

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

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

การวินิจฉัย

  1. กำหนดรหัสข้อผิดพลาดและแหล่งที่มาของข้อผิดพลาดสำหรับข้อผิดพลาดที่พบโดยใช้ API การตรวจสอบ เครื่องมือการติดตาม หรือบันทึกการเข้าถึง NGINX ตามที่อธิบายไว้ใน ขั้นตอนการวิเคราะห์ทั่วไป
  2. หาก Fault Code คือ messaging.adaptors.http.flow.DecompressionFailureAtResponse และ Fault Source มีค่า 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-Encoding คือ gzip แต่เพย์โหลดการตอบสนองไม่ได้อยู่ในรูปแบบ GZIP (ตามที่ระบุไว้โดย error.cause) ดังนั้น Apigee Edge จะตอบสนองด้วย 502 Bad Gateway และรหัสข้อผิดพลาด messaging.adaptors.http.flow.DecompressionFailureAtResponse

    คำขอจริง

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

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

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

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