Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu Apigee X. thông tin
Dấu hiệu
Ứng dụng khách nhận được mã trạng thái HTTP 503 Service Unavailable với mã lỗi protocol.http.ProxyTunnelCreationFailed làm phản hồi cho các lệnh gọi API.
Thông báo lỗi
Ứng dụng khách nhận được mã phản hồi sau:
HTTP/1.1 503 Service Unavailable
Ngoài ra, bạn có thể thấy thông báo lỗi sau:
{
"fault":{
"faultstring":"Proxy refused to create tunnel with response status 403",
"detail":{
"errorcode":"protocol.http.ProxyTunnelCreationFailed"
}
}
}Uỷ quyền chuyển tiếp và đường hầm
Apigee Edge cho phép các proxy API của bạn giao tiếp với máy chủ phụ trợ thông qua một máy chủ proxy như được giải thích trong phần
Định cấu hình proxy chuyển tiếp. Máy chủ proxy mở một kết nối bảo mật (HTTPS) hoặc không bảo mật (HTTP) đến máy chủ phụ trợ, tuỳ thuộc vào loại proxy (được biểu thị bằng thuộc tính HTTPClient.proxy.type) được dùng và truyền dữ liệu theo cả hai hướng. Đây được gọi là đường hầm.
Theo mặc định, Apigee Edge sử dụng tính năng tạo đường hầm cho tất cả lưu lượng truy cập. Để tắt tính năng chuyển tiếp, bạn cần đặt thuộc tính HTTPClient.use.tunneling thành false.
Mã lỗi: protocol.http.ProxyTunnelCreationFailed
Apigee Edge trả về mã lỗi protocol.http.ProxyTunnelCreationFailed nếu máy chủ proxy không thể tạo đường hầm giữa Apigee Edge và máy chủ phụ trợ do bất kỳ vấn đề nào, chẳng hạn như tường lửa, các quy định hạn chế về Danh sách kiểm soát quyền truy cập (ACL), các vấn đề về DNS, máy chủ phụ trợ không hoạt động, hết thời gian chờ, v.v.
Mã trạng thái trong faultstring của phản hồi từ Apigee Edge thường cho biết một nguyên nhân có thể ở cấp cao đã dẫn đến lỗi này.
Mẫu Faultstring:
Proxy refused to create tunnel with response status STATUS_CODE
Nguyên nhân có thể gây ra một số mã trạng thái xuất hiện trong faultstring:
Bảng sau đây mô tả các nguyên nhân có thể xảy ra tuỳ thuộc vào mã trạng thái được chỉ ra trong faultstring:
| Faultstring | Mô tả |
|---|---|
Proxy từ chối tạo đường hầm với trạng thái phản hồi 403 |
Điều này có thể xảy ra do các hạn chế về tường lửa hoặc ACL được định cấu hình trên máy chủ phụ trợ ngăn chặn việc tạo đường hầm. |
Proxy từ chối tạo đường hầm với trạng thái phản hồi 503 |
Điều này có thể xảy ra do vấn đề về DNS, các hạn chế của tường lửa, việc máy chủ phụ trợ không hoạt động khiến bạn không tạo được đường hầm |
| Proxy từ chối tạo đường hầm với trạng thái phản hồi 504 |
Điều này có thể xảy ra nếu có thời gian chờ trong quá trình tạo đường hầm |
Tuỳ thuộc vào mã trạng thái quan sát được trong faultstring, bạn cần sử dụng các kỹ thuật phù hợp để khắc phục vấn đề. Sổ tay này giải thích cách khắc phục vấn đề nếu bạn thấy mã trạng thái 403 trong faultstring cho mã lỗi protocol.http.ProxyTunnelCreationFailed.
Các nguyên nhân có thể
Lỗi này (mã trạng thái 403) xảy ra nếu có bất kỳ hạn chế nào về tường lửa hoặc ACL (Danh sách kiểm soát quyền truy cập) được định cấu hình trên máy chủ phụ trợ, khiến máy chủ proxy không thể tạo đường hầm giữa Apigee Edge và máy chủ phụ trợ.
| Nguyên nhân | Mô tả | Hướng dẫn khắc phục sự cố áp dụng cho |
|---|---|---|
| Proxy từ chối tạo đường hầm với trạng thái phản hồi 403 | Máy chủ proxy từ chối tạo đường hầm vì nhận được tên máy chủ Proxy thay vì tên máy chủ Backend trong tiêu đề Host. |
Chỉ dành cho người dùng Edge Private Cloud |
Các bước chẩn đoán thường gặp
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:
Công cụ theo dõi
Cách chẩn đoán lỗi bằng công cụ Trace (Theo dõi):
- Bật phiên theo dõi và một trong hai lựa chọn sau:
- Chờ lỗi 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 để tái hiện vấn đề
503 Service UnavailablebằngProxy refused to create tunnel with response status 403.
Đảm bảo bạn đã bật chế độ Show all FlowInfos (Hiện tất cả FlowInfo):
- Chọn một trong các yêu cầu không thực hiện được và kiểm tra dấu vết.
- Điều hướng qua các giai đoạn khác nhau của dấu vết và xác định vị trí xảy ra lỗi.
Bạn thường sẽ thấy lỗi này sau giai đoạn Target Request Flow Started (Đã bắt đầu quy trình yêu cầu mục tiêu) như minh hoạ dưới đây:
Xin lưu ý những thông tin sau:
error:
Proxy refused to create tunnel with response status 403- Chuyển đến Giai đoạn AX (Dữ liệu Analytics được ghi lại) trong dấu vết rồi nhấp vào giai đoạn đó.
Di chuyển xuống phần Tiêu đề phản hồi Thông tin chi tiết về giai đoạn và xác định các giá trị của X-Apigee-fault-code và X-Apigee-fault-source như minh hoạ dưới đây:
Bạn sẽ thấy các giá trị của X-Apigee-fault-code và X-Apigee-fault-source lần lượt là
protocol.http.ProxyTunnelCreationFailedvàtarget, cho biết lỗi này xảy ra do không tạo được đường hầm proxy vì không nhận được tiêu đề máy chủ lưu trữ dự kiến.Tiêu đề phản hồi Giá trị X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailedX-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, bạn có thể sử dụng nhật ký truy cập NGINX để xác định thông tin chính về lỗi HTTP
503 Service Unavailable. Kiểm tra nhật ký truy cập NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_logVị trí: ORG, ORG và PORT# được thay thế bằng các giá trị thực tế.
- Tìm xem có lỗi
503nào với mã lỗiprotocol.http.ProxyTunnelCreationFailedtrong một khoảng thời gian cụ thể hay không (nếu vấn đề xảy ra trong quá khứ) hoặc có yêu cầu nào vẫn không thành công với503hay không. Nếu bạn thấy bất kỳ lỗi
503nào có X-Apigee-fault-code khớp với giá trị củaprotocol.http.ProxyTunnelCreationFailed, hãy xác định giá trị của X-Apigee-fault-source.Ví dụ về lỗi 503 trong nhật ký truy cập của NGINX:
Mục nhập mẫu ở trên trong 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.ProxyTunnelCreationFailedX-Apigee-fault-source target
Nguyên nhân: Proxy từ chối tạo đường hầm với trạng thái phản hồi 403
Chẩn đoán
- Xác định Mã lỗi và Nguồn lỗi cho
503 Service Unavailablebằng cách sử dụng Trace Tool hoặc nhật ký truy cập NGINX như giải thích trong phần Các bước chẩn đoán thường gặp. - Xem Thông báo lỗi và xác định mã trạng thái được chỉ ra trong
faultstringkhi không tạo được đường hầm. - Trong trường hợp này, mã trạng thái là
403, tức là Bị cấm. - Điều này có nghĩa là bạn không có đủ quyền hoặc đặc quyền để tạo đường hầm. Điều này thường xảy ra nếu có bất kỳ hạn chế nào về tường lửa hoặc ACL (Danh sách kiểm soát quyền truy cập) ngăn việc tạo đường hầm.
- Kiểm tra mọi hạn chế về tường lửa và/hoặc ACL được định cấu hình trên máy chủ phụ trợ có thể ngăn việc tạo đường hầm.
- Tuỳ thuộc vào loại tường lửa và/hoặc các hạn chế về ACL, bạn cần khắc phục vấn đề một cách thích hợp.
Hãy xem xét một ví dụ về hạn chế của tường lửa để giải thích cách khắc phục và giải quyết vấn đề này:
Tình huống: Hạn chế của tường lửa trên máy chủ phụ trợ yêu cầu Tiêu đề máy chủ lưu trữ phải luôn chứa tên máy chủ phụ trợ
Bạn có thể sử dụng một trong những cách sau để xác định Tiêu đề máy chủ lưu trữ do Apigee Edge truyền:
Trace
Cách xác định Tiêu đề máy chủ lưu trữ bằng Trace:
- Xác định rằng
faultstringchứaProxy refused to create tunnel with response status 403bằng cách sử dụng dấu vết như được giải thích trong Các bước chẩn đoán thường gặp. - Chuyển đến giai đoạn Target Request Flow Started và xem xét Request Headers (Tiêu đề yêu cầu)
- Xác minh giá trị của tên máy chủ được chỉ định trong Tiêu đề máy chủ lưu trữ trong phần Tiêu đề yêu cầu.
- Nếu tiêu đề Host chứa tên máy chủ lưu trữ proxy, thì đó là nguyên nhân gây ra lỗi này.
- Điều này là do tường lửa được định cấu hình trên máy chủ phụ trợ để chỉ chấp nhận các yêu cầu nếu Tiêu đề máy chủ lưu trữ chứa tên của máy chủ phụ trợ.
- Vì vậy, khi máy chủ proxy cố gắng tạo đường hầm với máy chủ phụ trợ, thao tác này sẽ không thành công và xảy ra lỗi
Proxy refused to create tunnel with response status 403.Dấu vết mẫu cho thấy Tiêu đề máy chủ có tên máy chủ proxy
Trong mẫu dấu vết được hiển thị ở trên, dấu vết này cho thấy Tiêu đề máy chủ lưu trữ chứa tên của máy chủ lưu trữ proxy
www.proxyserver.com.Vì có một hạn chế của tường lửa được định cấu hình trên máy chủ phụ trợ chỉ mong đợi tên máy chủ phụ trợ có trong Tiêu đề máy chủ lưu trữ, nên bạn sẽ gặp lỗiProxy refused to create tunnel with response status 403.
tcpdump
Cách xác định Tiêu đề máy chủ lưu trữ bằng tcpdump
Ghi lại một
tcpdumptrên máy chủ proxy cho các yêu cầu đến từ thành phần Message Processor của Apigee Edge bằng lệnh sau:tcpdump -i any -s 0 host MP_IP_ADDRESS -w FILE_NAME
Để biết thêm thông tin về cách sử dụng lệnh
tcpdump, hãy xem tcpdump.- Phân tích dữ liệu
tcpdumpbằng công cụ Wireshark hoặc một công cụ tương tự. Sau đây là một ví dụ về việc phân tích tcpdump bằng Wireshark:
- Các gói số 13, 14 và 15 cho thấy Trình xử lý thông báo đang thiết lập kết nối với máy chủ proxy thông qua quy trình bắt tay TCP ba chiều.
- Trong gói 16, Trình xử lý thông báo đã kết nối với máy chủ lưu trữ proxy
httpbin.org(như trong ví dụ ở trên). Chọn gói 16 và xem xét chi tiết nội dung của gói, đặc biệt là Tiêu đề máy chủ lưu trữ được Bộ xử lý thông báo truyền đến máy chủ proxy.
- Mẫu trên cho thấy Tiêu đề máy chủ lưu trữ
httpin.org, đây là tên máy chủ của máy chủ proxy. Do đó, khi máy chủ proxy cố gắng tạo đường hầm với máy chủ phụ trợ bằng cách truyền Tiêu đề máy chủ lưu trữhttpin.orgở trên, máy chủ này sẽ gặp lỗiProxy refused to create tunnel with response status 403.
- Xác định rằng
Độ phân giải
Tình huống: Hạn chế của tường lửa đối với máy chủ proxy yêu cầu Tiêu đề máy chủ lưu trữ phải luôn chứa tên máy chủ phụ trợ
Nếu bạn xác định được rằng lỗi này xảy ra do tường lửa trên máy chủ phụ trợ được định cấu hình sao cho tường lửa luôn mong đợi Tiêu đề máy chủ lưu trữ phải luôn chứa tên máy chủ phụ trợ, trong khi Trình xử lý thông báo đang gửi tên máy chủ máy chủ proxy, thì hãy thực hiện các bước sau để giải quyết vấn đề:
Đặt thuộc tính
use.proxy.host.header.with.target.urithành true trong TargetEndpoint như trong ví dụ sau:Cấu hình TargetEndpoint mẫu:
<TargetEndpoint name="default"> <HTTPTargetConnection> <URL>https://mocktarget.apigee.net/json</URL> <Properties> <Property name="use.proxy.host.header.with.target.uri">true</Property> </Properties> </HTTPTargetConnection> </TargetEndpoint>Đảm bảo rằng các thuộc tính khác liên quan đến proxy chuyển tiếp được định cấu hình trên Trình xử lý thông báo như sau:
- Xem xét tệp
/opt/apigee/customer/application/message-processor.propertiestrên từng Trình xử lý thông báo. Đảm bảo rằng bạn đã đặt các thuộc tính sau theo trường hợp sử dụng hoặc yêu cầu của mình:
Giá trị mẫu cho các thuộc tính:
conf_http_HTTPClient.use.proxy=true conf/http.properties+HTTPClient.proxy.type=HTTP conf/http.properties+HTTPClient.proxy.host=PROXY_SERVER_HOST_NAME conf/http.properties+HTTPClient.proxy.port=PORT_# conf/http.properties+HTTPClient.proxy.user=USERNAME conf/http.properties+HTTPClient.proxy.password=PASSWORD
- Xem xét tệp
Phải thu thập thông tin chẩn đoán
Nếu vấn đề vẫn tiếp diễn ngay cả sau khi bạn làm theo hướng dẫn ở trên, hãy thu thập thông tin chẩn đoán sau đây rồi liên hệ với Nhóm hỗ trợ Apigee Edge:
Nếu bạn là người dùng Đám mây riêng, hãy cung cấp những thông tin sau:
- Thông báo lỗi hoàn chỉnh được ghi nhận cho các yêu cầu không thành công
- 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_logTrong đó: ORG, ENV và PORT# được thay thế bằng các giá trị thực tế.
Nhật ký hệ thống của Trình xử lý tin nhắn
/opt/apigee/var/log/edge-message-processor/logs/system.log