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 sẽ nhận một mã trạng thái HTTP của 503 Service Unavailable
với mã lỗi protocol.http.ProxyTunnelCreationFailed
làm phản hồi cho 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 đây:
HTTP/1.1 503 Service Unavailable
Ngoài ra, bạn có thể nhận 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" } } }
Chuyển tiếp proxy và đường hầm
Apigee Edge cho phép các proxy API giao tiếp với máy chủ phụ trợ thông qua một máy chủ proxy như 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 an toàn (HTTPS) hoặc không an toàn (HTTP) tới máy chủ phụ trợ tuỳ thuộc vào loại proxy (do thuộc tính HTTPClient.proxy.type
) chỉ định và chuyển dữ liệu theo cả hai hướng. Đây được gọi là quá trình chạy đường hầm.
Theo mặc định, Apigee Edge sử dụng kỹ thuật tạo đường hầm cho tất cả lưu lượng truy cập. Để tắt tính năng tạo đường hầm, bạn cần đặt thuộc tính HTTPClient.use.tunneling
thành false
.
Mã lỗi: Protocol.http.ProxyTunnelCreationFailed
Apigee Edge sẽ 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 các vấn đề như tường lửa, hạn chế ACL (Danh sách điều khiển truy cập), vấn đề DNS, không có máy chủ phụ trợ, hết thời gian chờ, v.v.
Mã trạng thái trong faultstring
của phản hồi của Apigee Edge thường cho biết có thể có nguyên nhân cấp cao dẫn đến lỗi này.
Mẫu chuỗi lỗi:
Proxy refused to create tunnel with response status STATUS_CODE
Những nguyên nhân có thể dẫn đến một số mã trạng thái quan sát được trong chuỗi lỗi:
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 biểu thị trong faultstring
:
Chuỗi lỗi | Nội dung mô tả |
---|---|
Proxy đã từ chối tạo đường hầm với trạng thái phản hồi 403 |
Việc này có thể xảy ra có thể là do tường lửa hoặc các hạn chế ACL được định cấu hình trên máy chủ phụ trợ ngăn cả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 |
Việc này có thể xảy ra do các vấn đề về DNS, hạn chế tường lửa, việc máy chủ phụ trợ không hoạt động và ngă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 504 |
Điều này có thể xảy ra nếu có thời gian chờ trong khi tạo đường hầm |
Tuỳ thuộc vào mã trạng thái quan sát trong faultstring
, bạn cần sử dụng các kỹ thuật thích hợp để khắc phục sự cố. Cẩm nang này giải thích cách khắc phục sự cố nếu bạn quan sát 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ế tường lửa hoặc ACL (Danh sách kiểm soát quyền truy cập) nào được định cấu hình trên máy chủ phụ trợ, ngăn việc tạo đường hầm giữa Apigee Edge và máy chủ phụ trợ qua máy chủ proxy.
Nguyên nhân | Nội dung 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 có 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ủ lưu trữ của máy chủ proxy thay vì tên máy chủ lưu trữ của máy chủ phụ trợ trong tiêu đề Host . |
Chỉ dành cho người dùng Edge Private Cloud |
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:
Công cụ theo dõi
Cách chẩn đoán lỗi bằng công cụ Theo dõi:
- Bật tính năng theo dõi phiên và:
- 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 Unavailable
bằngProxy refused to create tunnel with response status 403
.
Đảm bảo bạn đã bật tuỳ chọn Show all FlowInfos (Hiện tất cả thông tin luồng):
- 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 theo dõi và xác định vị trí xảy ra lỗi.
Bạn thường sẽ thấy lỗi sau giai đoạn Đã bắt đầu quy trình yêu cầu mục tiêu như sau:
Xin lưu ý những thông tin sau:
lỗi:
Proxy refused to create tunnel with response status 403
- Chuyển đến Giai đoạn AX (Dữ liệu phân tích đã ghi lại) trong dấu vết rồi nhấp vào đó.
Cuộn xuống mục Tiêu đề phản hồi Thông tin chi tiết về giai đoạn rồi xác định giá trị của X-Apigee-fault-code và X-Apigee-fault-source như sau:
Bạn sẽ thấy các giá trị tương ứng của X-Apigee-fault-code và X-Apigee-fault-source là
protocol.http.ProxyTunnelCreationFailed
vàtarget
, cho biết rằng lỗi này là do không tạo được đường hầm proxy do không nhận được tiêu đề máy chủ dự kiến.Tiêu đề phản hồi Giá trị X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailed
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ể 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_log
Trong đó: ORG, ORG và PORT# được thay bằng giá trị thực tế.
- Tìm kiếm xem có lỗi
503
nào với mã lỗiprotocol.http.ProxyTunnelCreationFailed
trong 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ới503
hay không. Nếu bạn tìm thấy bất kỳ lỗi
503
nào trong đó X-Apigee-fault-code khớp giá trị củaX-Apigee-fault-code , thì hãy xác định giá trị của X-Apigee-fault-codeVí dụ về lỗi 503 trong nhật ký truy cập NGINX:
Mục mẫu nêu trên từ nhật ký truy cập NGINX có các giá trị sau đây cho X- Apigee-fault-code và X-Apigee-fault-source:
Tiêu đề phản hồi Giá trị X-Apigee-fault-code protocol.http.ProxyTunnelCreationFailed
X-Apigee-fault-source target
Nguyên nhân: Proxy bị 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 Unavailable
bằng Công cụ theo dõi 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 phổ biến. - Xem lại Thông báo lỗi rồi xác định mã trạng thái được chỉ định trong
faultstring
đối với lỗi khi tạo đường hầm. - Trong trường hợp này, mã trạng thái là
403
, có nghĩa 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. Trường hợp này thường xảy ra nếu có bất kỳ tường lửa hoặc quy tắc hạn chế ACL (Danh sách kiểm soát truy cập) nào ngăn việc tạo đường hầm.
- Xem xét mọi tường lửa và/hoặc hạn chế ACL được định cấu hình trên máy chủ phụ trợ của bạn mà 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 hạn chế ACL, bạn cần khắc phục vấn đề một cách thích hợp.
Hãy xem một ví dụ về quy định 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ế tường lửa trên máy chủ phụ trợ yêu cầu Tiêu đề máy chủ phải luôn chứa tên máy chủ của 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ữ mà Apigee Edge đã chuyển:
Trace
Cách xác định Tiêu đề máy chủ bằng cách sử dụng Dấu vết:
- Đảm bảo rằng
faultstring
chứaProxy refused to create tunnel with response status 403
bằng cách sử dụng dấu vết như giải thích trong phần Các bước chẩn đoán thường gặp. - Chuyển đến giai đoạn Đã bắt đầu quy trình yêu cầu mục tiêu rồi xem xét phần Tiêu đề của yêu cầu
- Xác minh giá trị của tên máy chủ được chỉ định trong Host header (Tiêu đề máy chủ) trong mục Request Headers (Tiêu đề yêu cầu).
- Nếu tiêu đề Máy chủ chứa tên máy chủ proxy, thì đó chính 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 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ợ, máy chủ sẽ không thành công với 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 dấu vết mẫu nêu trên, bạn thấy Tiêu đề máy chủ chứa tên của máy chủ proxy
www.proxyserver.com.
Vì có một quy tắc hạn chế về tường lửa được định cấu hình trên máy chủ phụ trợ và máy chủ phụ trợ chỉ muốn tên máy chủ lưu trữ phụ trợ được chứa trong Tiêu đề máy chủ, nên bạn sẽ gặp lỗiProxy refused to create tunnel with response status 403
.
tcpdump
Để xác định Tiêu đề máy chủ lưu trữ bằng tcpdump
Ghi lại
tcpdump
trên máy chủ proxy cho các yêu cầu đến từ thành phần Trình xử lý tin nhắn 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 phần tcpdump.- Phân tích dữ liệu
tcpdump
bằng công cụ Wireshark hoặc một công cụ tương tự. Dưới đây là bản phân tích mẫu về tcpdump bằng Wireshark:
- Các số gói 13, 14 và 15 cho biết Bộ 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ủ proxy
httpbin.org
(minh hoạ trong ví dụ trên). Chọn gói 16 và kiểm tra nội dung chi tiết của gói, cụ thể là Tiêu đề máy chủ lưu trữ đang được Bộ xử lý thông báo chuyển đến máy chủ proxy.
- Mẫu ở trên cho thấy Host Header (Tiêu đề máy chủ)
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ủhttpin.org
ở trên, máy chủ sẽ không thành công do lỗiProxy refused to create tunnel with response status 403
.
- Đảm bảo rằng
Độ phân giải
Tình huống: Hạn chế tường lửa trên máy chủ proxy dự kiến Tiêu đề máy chủ phải luôn chứa tên máy chủ phụ trợ
Nếu bạn chắc chắn 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 Tiêu đề máy chủ phải luôn chứa tên máy chủ backend, trong khi Trình xử lý thông báo đang gửi tên máy chủ backend, 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.uri
thà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 lại tệp
/opt/apigee/customer/application/message-processor.properties
trên từng Bộ xử lý tin nhắn. Đả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 bạn:
Giá trị mẫu cho tài sản:
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 lại tệp
Phải thu thập thông tin chẩn đoán
Nếu sự cố vẫn tiếp diễn sau khi đã 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 Bộ phận hỗ trợ Apigee:
Nếu bạn là người dùng Đám mây riêng tư, hãy cung cấp những thông tin sau:
- Đã phát hiệ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à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_log
Trong đó: ORG, ENV và PORT# được thay 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