Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Triệu chứng
Ứng dụng khách sẽ nhận được mã trạng thái HTTP 502 Bad Gateway
kèm theo lỗi
mã protocol.http.ResponseWithBody
làm phản hồi cho lệnh gọi API.
Thông báo lỗi
Ứng dụng sẽ nhận được mã phản hồi sau đây:
HTTP/1.1 502 Bad Gateway
Ngoài ra, bạn có thể nhận thấy một trong các thông báo lỗi sau:
{ "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" } } }
Các nguyên nhân có thể
Lỗi này xảy ra nếu phản hồi HTTP từ máy chủ phụ trợ đến Apigee Edge
204 No Content
hoặc 205 Reset Content
nhưng chứa phản hồi
body và/hoặc một hoặc nhiều tiêu đề sau:
Content-Length
Content-Encoding
Transfer-Encoding
Theo thông số kỹ thuật
RFC 7231, mục 6.3.5: 204 Không có nội dung và
RFC 7231, mục 6.3.6: 205 Đặt lại nội dung, dự kiến sẽ không có nội dung bổ sung
phải được máy chủ gốc gửi dưới dạng một phần của nội dung tải trọng phản hồi có mã trạng thái 204 No
Content
hoặc 205 Reset Content
. Tiêu đề phản hồi
chẳng hạn như Content-Length
, Content-Encoding
hoặc
Transfer-Encoding
cho biết kích thước, loại hoặc định dạng của tải trọng phản hồi.
Do đó, Apigee Edge trả về mã trạng thái 502 Bad Gateway
có
mã lỗi protocol.http.ResponseWithBody
cho máy khách theo các dòng sau
trường hợp:
Mã trạng thái từ máy chủ phụ trợ | ||
---|---|---|
Phản hồi từ máy chủ phụ trợ chứa | 204 Không có nội dung | 205 Đặt lại nội dung |
Nội dung phản hồi | ERROR (LỖI) | ERROR (LỖI) |
Tiêu đề (được đặt thành khác 0) |
ERROR (LỖI) | ERROR (LỖI) |
(được đặt thành hỗ trợ mã hoá trong Apigee Edge) |
ERROR (LỖI) | KHÔNG CÓ LỖI |
Transfer-Encoding |
ERROR (LỖI) | ERROR (LỖI) |
Dưới đây là những nguyên nhân có thể gây ra lỗi này:
Nguyên nhân | Mô tả | Hướng dẫn khắc phục sự cố áp dụng cho |
---|---|---|
Nội dung phản hồi hoặc tiêu đề có phản hồi 204 từ máy chủ phụ trợ | Máy chủ phụ trợ sẽ gửi một 204 No Content hoặc 205 Reset Content
phản hồi có nội dung phản hồi và/hoặc một hoặc nhiều tiêu đề Content-Type ,
Content-Encoding hoặc Transfer-Encoding . |
Người dùng Edge công khai và riêng tư |
Các bước chẩn đoán phổ biến
Hãy sử dụng một trong các công cụ/kỹ thuật sau để chẩn đoán lỗi này:
Giám sát API
Cách chẩn đoán lỗi bằng tính năng Giám sát API:
- Đăng nhập vào giao diện người dùng Apigee Edge với tư cách là người dùng có vai trò thích hợp.
Chuyển sang tổ chức mà bạn muốn điều tra vấn đề này.
- Chuyển đến thẻ Analyze (Phân tích) > Giám sát API > Điều tra.
- Chọn khung thời gian cụ thể mà bạn phát hiện thấy lỗi.
- Vẽ Mã lỗi theo Thời gian.
Chọn một ô có mã lỗi
protocol.http.ResponseWithBody
là được hiển thị bên dưới:Bạn sẽ thấy thông tin về mã lỗi
protocol.http.ResponseWithBody
như minh hoạ dưới đây:Nhấp vào Xem nhật ký và mở rộng hàng của yêu cầu không thành công.
- Từ cửa sổ Logs (Nhật ký), hãy lưu ý những thông tin chi tiết sau:
- Mã trạng thái:
502
- Nguồn lỗi:
target
- Mã lỗi:
protocol.http.ResponseWithBody
.
- Mã trạng thái:
- Nếu Nguồn lỗi có giá trị
target
và Lỗi Mã có giá trịprotocol.http.ResponseWithBody
, sau đó giá trị đó cho biết rằng lỗi xảy ra vì máy chủ phụ trợ đã gửi Mã trạng thái204 No Content
hoặc205 Reset Content
kèm theo nội dung phản hồi và/hoặc một trong các tiêu đề được đề cập trong Phần Nguyên nhân có thể xảy ra.
Công cụ theo dõi
Cách chẩn đoán lỗi bằng công cụ Theo dõi:
- Bật phiên theo dõi
và:
- Chờ lỗi
502 Bad Gateway
xảy ra. hoặc - Nếu bạn có thể tái hiện vấn đề, hãy thực hiện lệnh gọi API và tái tạo lỗi
502 Bad Gateway
.
- Chờ lỗi
Đảm bảo bạn đã bật chế độ Show all FlowInfos (Hiện tất cả FlowInfos):
- Chọn một trong các yêu cầu không thành công rồi kiểm tra dấu vết.
- Di chuyển qua các giai đoạn của quá trình theo dõi và xác định vị trí lỗi đã xảy ra.
Thông thường, bạn sẽ thấy lỗi trong phần
flowinfo
Lỗi sau giai đoạn Gửi yêu cầu đến máy chủ mục tiêu như minh hoạ dưới đây:Tình huống #1
Tình huống 1: Máy chủ phụ trợ phản hồi bằng mã trạng thái
204 No Content
chứa nội dung phản hồi và/hoặc một trong các tiêu đề được liệt kê trong Nguyên nhân có thể xảy ra.Lưu ý các giá trị của các dấu vết sau:
- lỗi:
Received 204 Response with message body
- error.class:
com.apigee.rest.framework.BadGateway
Tình huống #2
Tình huống 2: Máy chủ phụ trợ phản hồi bằng mã trạng thái
204 No Content
chứa nội dung phản hồi và/hoặc một trong các tiêu đề được liệt kê trong Nguyên nhân có thể xảy ra.Lưu ý các giá trị của các dấu vết sau:
- lỗi:
Received 205 Response with message body
- error.class:
com.apigee.rest.framework.BadGateway
- lỗi:
- Chuyển đến giai đoạn AX (Đã ghi dữ liệu Analytics) trong dấu vết và nhấp vào đó.
Cuộn xuống phần Chi tiết giai đoạn, Tiêu đề lỗi và xác định giá trị của X-Apigee-fault-code và X-Apigee-fault-source như minh hoạ dưới đây:
- Lưu ý rằng các giá trị của X-Apigee-fault-code và X-Apigee-fault-source
are protocol.http.ResponseWithBody
vàtarget
tương ứng. Điều này cho thấy rằng lỗi xảy ra vì máy chủ phụ trợ đã gửi một Mã trạng thái204 No Content
hoặc205 Reset Content
với nội dung phản hồi và/hoặc một trong các tiêu đề được đề cập trong Nguyên nhân có thể xảy ra.Lỗi Giá trị X-Apigee-fault-code protocol.http.ResponseWithBody
X-Apigee-fault-source target
NGINX
Cách chẩn đoán lỗi bằng nhật ký truy cập NGINX:
- Nếu là người dùng Đám mây riêng tư, bạn có thể sử dụng nhật ký truy cập NGINX để
xác định thông tin chính về HTTP
502 Bad Gateway
. Kiểm tra nhật ký truy cập NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Trong đó: ORG, ENV và PORT# được thay thế bằng các giá trị thực tế.
- Tìm kiếm xem có lỗi
502
nào với mã lỗi hay khôngprotocol.http.ResponseWithBody
trong một khoảng thời gian cụ thể (nếu sự cố đã xảy ra trong quá khứ) hoặc nếu có bất kỳ yêu cầu nào vẫn không thành công với502
. Nếu bạn tìm thấy bất kỳ lỗi
502
nào với X-Apigee-fault-code khớp với giá trị củaprotocol.http.ResponseWithBody
, sau đó xác định giá trị của X-Apigee-fault-source.Lỗi 502 mẫu trong nhật ký truy cập NGINX:
Mục nhập mẫu ở trên từ nhật ký truy cập NGINX có các giá trị sau cho X- Apigee-fault-code và X-Apigee-fault-source:
Tiêu đề phản hồi Giá trị X-Apigee-fault-code protocol.http.ResponseWithBody
X-Apigee-fault-source target
- Lưu ý rằng các giá trị của X-Apigee-fault-code và X-Apigee-fault-source
lần lượt là
protocol.http.ResponseWithBody
vàtarget
. Điều này cho thấy rằng lỗi xảy ra vì máy chủ phụ trợ đã gửi một Mã trạng thái204 No Content
hoặc205 Reset Content
với nội dung phản hồi và/hoặc một trong các tiêu đề được đề cập trong Nguyên nhân có thể xảy ra.
Nguyên nhân: Nội dung phản hồi hoặc tiêu đề có phản hồi 204 từ máy chủ phụ trợ
Chẩn đoán
- Xác định Mã lỗi và Nguồn lỗi cho lỗi phát hiện được bằng API Nhật ký giám sát, công cụ theo dõi hoặc nhật ký truy cập NGINX như được giải thích trong Các bước chẩn đoán thường gặp.
- Nếu Mã lỗi là
protocol.http.ResponseWithBody
và Nguồn lỗi có giá trịtarget
, thì mã này cho biết chương trình phụ trợ máy chủ đã phản hồi với trạng thái204 No Content
hoặc205 Reset Content
có nội dung phản hồi và/hoặc một trong các tiêu đề được đề cập trong Nguyên nhân có thể xảy ra. Để xác thực xem máy chủ phụ trợ đã thực sự gửi nội dung tải trọng phản hồi và/hoặc một hoặc nhiều tiêu đề được đề cập trong Nguyên nhân có thể xảy ra, bạn có thể thực hiện các bước sau:
Nếu bạn là người dùng Cloud Public và nếu bạn có thể gửi cùng một yêu cầu API cho máy chủ phụ trợ trực tiếp từ bất kỳ hệ thống nào của bạn.
- Nếu là người dùng Đám mây riêng tư, bạn có thể gửi cùng một yêu cầu API cho máy chủ phụ trợ trực tiếp từ một trong các Trình xử lý thư được liên kết với tổ chức và môi trường nơi phát hiện lỗi.
Xem lại phản hồi nhận được từ máy chủ phụ trợ và xác minh rằng phản hồi đó có chứa mã nội dung tải trọng phản hồi và/hoặc một hoặc nhiều tiêu đề nêu trên. Nếu có, thì đó là nguyên nhân gây ra lỗi này.
Mẫu số 1
Mẫu số 1: Phản hồi 204 của máy chủ phụ trợ với tiêu đề Content-Encoding
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-aliveTrong mẫu này, máy chủ phụ trợ đã phản hồi bằng Mã trạng thái
204 No Content
vàContent-Encoding: gzip
Mẫu số 2
Mẫu số 2: Phản hồi 204 của máy chủ phụ trợ với tiêu đề Content-Length
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-aliveTrong mẫu này, máy chủ phụ trợ đã phản hồi bằng Mã trạng thái
204 No Content
vàContent-Length: 48
Mẫu số 3
Mẫu số 3: Phản hồi 205 của máy chủ phụ trợ với nội dung phản hồi
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
Trong mẫu này, máy chủ phụ trợ đã phản hồi bằng Mã trạng thái
205 Reset Content
có nội dung phản hồiThis is a sample Response.
- Trong tất cả ví dụ trên, máy chủ phụ trợ đã gửi
204 No Content
hoặc Mã trạng thái205 Reset Content
cùng với nội dung phản hồi và/hoặc một trong các tiêu đề được đề cập trong Nguyên nhân có thể xảy ra. - Do đó, Apigee Edge đã gửi mã trạng thái
502 Bad Gateway
có mã lỗiprotocol.http.ResponseWithBody
.
Độ phân giải
Đảm bảo máy chủ phụ trợ luôn tuân thủ Thông số kỹ thuật
RFC 7231, mục 6.3.6: 205 Đặt lại nội dung, khi gửi 204 No Content
hoặc 205 Reset Content
phản hồi với Apigee Edge. Tức là máy chủ phụ trợ
KHÔNG ĐƯỢC gửi nội dung sau đây như một phần của 204 No Content
hoặc
205 Reset Content
phản hồi:
- Nội dung tải trọng phản hồi
- Và bất kỳ tiêu đề nào sau đây:
Content-Length
Content-Encoding
Transfer-Encoding
Thông số kỹ thuật
Apigee Edge phản hồi bằng mã trạng thái 502 Bad Gateway
và mã lỗi
protocol.http.ResponseWithBody
nếu máy chủ phụ trợ gửi
204 No Content
hoặc 205 Reset Content
phản hồi nhưng
không tuân thủ các thông số kỹ thuật RFC sau đây:
Thông số kỹ thuật |
---|
RFC 7231, mục 6.3.5: 204 Không có nội dung |
RFC 7231, mục 6.3.6: 205 Đặt lại nội dung |
Các điểm chính cần lưu ý
Giải pháp được đề xuất là khắc phục sự cố máy chủ phụ trợ để gửi 204 No Content
và mã trạng thái 205 Reset Content
không có nội dung phản hồi và bất kỳ
tiêu đề - Content-Length
, Content-Encoding
và
Transfer-Encoding
và tuân thủ thông số kỹ thuật
RFC 7231, mục 6.3.5: 204 Không có nội dung và
RFC 7231, mục 6.3.6: 205 Đặt lại nội dung.
Nếu bạn vẫn cần hỗ trợ từ Nhóm hỗ trợ Apigee, hãy truy cập vào Phải thu thập thông tin chẩn đoán.
Phải thu thập thông tin chẩn đoán
Thu thập những thông tin chẩn đoán sau đây rồi liên hệ với Bộ phận hỗ trợ Apigee Edge:
Nếu bạn là người dùng Cloud Public, hãy cung cấp những thông tin sau:
- Tên tổ chức
- Tên môi trường
- Tên proxy API
- Hoàn tất lệnh
curl
dùng để tái hiện lỗi502
- Tệp theo dõi cho các yêu cầu API
Nếu bạn là người dùng Đám mây riêng tư, hãy cung cấp các thông tin sau:
- Đã nhận thấy thông báo lỗi hoàn chỉnh đối với các yêu cầu không thực hiện được
- Tên môi trường
- Gói Proxy API
- Tệp theo dõi cho các yêu cầu API
Nhật ký truy cập NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Vị trí: ORG, ENV và PORT# được thay thế bằng giá trị thực tế.
- Nhật ký hệ thống của Trình xử lý thư
/opt/apigee/var/log/edge-message-processor/logs/system.log