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 503 Service Unavailable
kèm theo mã
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 sẽ 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à tạo đườ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 proxy
như được giải thích trong
Định cấu hình proxy chuyển tiếp. Máy chủ proxy mở một trang web bảo mật (HTTPS) hoặc không bảo mật
Kết nối (HTTP) với máy chủ phụ trợ tuỳ thuộc vào loại proxy (được biểu thị)
do tài sản HTTPClient.proxy.type
) sử dụng và chuyể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 kỹ thuật tạo đường hầm cho mọi lưu lượng truy cập. Để tắt kỹ thuật tạo đường hầm, thuộc tính này
Bạn cần đặt 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 bất kỳ
các sự cố như tường lửa, hạn chế ACL (Danh sách kiểm soát truy cập), sự cố DNS, máy chủ phụ trợ
tình trạng không có sẵn, hết thời gian chờ, v.v.
Thường thì mã trạng thái trong faultstring
của phản hồi từ Apigee Edge
chỉ ra nguyên nhân có thể gây ra lỗi ở mức độ cao.
Mẫu chuỗi liên kết:
Proxy refused to create tunnel with response status STATUS_CODE
Các nguyên nhân có thể xảy ra đối với một số mã trạng thái 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 | Mô tả |
---|---|
Proxy đã từ chối tạo đường hầm có trạng thái phản hồi 403 |
Điều này có thể xảy ra do các hạn chế của tường lửa hoặc ACL được định cấu hình trên máy chủ phụ trợ ngăn việc tạo đường hầm. |
Proxy đã từ chối tạo đường hầm có 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ế về tường lửa, máy chủ phụ trợ tình trạng không có sẵn, ngăn cản việc tạo đường hầm |
Proxy đã từ chối tạo đường hầm có 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 được ghi nhận trong faultstring
, bạn cần sử dụng
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ố
vấn đề 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ỳ tường lửa hoặc ACL nào (Quyền truy cập
Control List) hạn chế được định cấu hình trên máy chủ phụ trợ khiến đường hầm không được
được tạo giữa Apigee Edge và máy chủ phụ trợ bằng máy chủ proxy.
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 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ữ máy chủ phụ trợ trong tiêu đề Host . |
Chỉ 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 phiên theo dõi và
hoặc:
- 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
vớiProxy refused to create tunnel with response status 403
.
Đả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 này sau giai đoạn Target request Flow required (Đã 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:
lỗi:
Proxy refused to create tunnel with response status 403
- 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 Tiêu đề phản hồi Chi tiết giai đoạn và xác định giá trị của X-Apigee-fault-code và X-Apigee-fault-source là được hiển thị bên dưới:
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.ProxyTunnelCreationFailed
vàtarget
, cho biết rằng lỗi này là do đường hầm proxy không tạo được 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.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ể sử dụng nhật ký truy cập NGINX để
xác định thông tin chính về 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 thế bằng các giá trị thực tế.
- Tìm kiếm xem có lỗi
503
nào với mã lỗi hay khôngprotocol.http.ProxyTunnelCreationFailed
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ới503
. Nếu bạn tìm thấy bất kỳ
503
lỗi nào với mã X-Apigee-fault-code khớp với giá trị củaprotocol.http.ProxyTunnelCreationFailed
, sau đó xác định giá trị của X-Apigee-fault-source..Lỗi 503 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.ProxyTunnelCreationFailed
X-Apigee-fault-source target
Nguyên nhân: Proxy bị từ chối tạo đường hầm có 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 Các bước chẩn đoán thường gặp. - Xem lại Thông báo lỗi và xác định mã trạng thái
biểu thị trong
faultstring
về 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à không có đủ quyền hoặc đặc quyền để tạo đường hầm. Điều này có thể thường 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 truy cập) nào ngăn việc tạo đường hầm.
- Xem lại mọi quy tắc 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ủ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 quy tắc hạn chế ACL, bạn cần khắc phục sự cố một cách phù hợp.
Hãy xem ví dụ về một hạn chế đối với tường lửa để giải thích cách khắc phục sự cố và giải quyết vấn đề này vấn đề:
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 luôn chứa tên máy chủ lưu trữ của máy chủ phụ trợ
Bạn có thể dùng một trong những cách sau để xác định Tiêu đề máy chủ mà Apigee Edge truyền qua:
Trace
Cách xác định Tiêu đề máy chủ lưu trữ bằng tính năng Theo dõi:
- Đả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 Các bước chẩn đoán thường gặp. - Chuyển đến giai đoạn Đã bắt đầu Luồng yêu cầu mục tiêu và xem xét Tiêu đề của 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 Tiêu đề của yêu cầu.
- Nếu tiêu đề Máy chủ lưu trữ chứa tên máy chủ 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ấp nhận chỉ yêu cầu nếu Tiêu đề máy chủ lưu trữ chứa tên 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ợ,
không thành công với lỗi này
Proxy refused to create tunnel with response status 403
.Dấu vết mẫu cho thấy Tiêu đề máy chủ lưu trữ có tên máy chủ proxy
Trong dấu vết mẫu nêu trên, cho thấy Tiêu đề máy chủ lưu trữ chứa tên của máy chủ proxy
www.proxyserver.com.
Vì có một hạn chế 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ủ lưu trữ của máy chủ phụ trợ trong Tiêu đề máy chủ lưu trữ, thì bạn sẽ nhận được lỗiProxy refused to create tunnel with response status 403
.
tcpdump
Để xác định Tiêu đề máy chủ bằng tcpdump
Ghi lại một
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 tcpdump.- Phân tích dữ liệu
tcpdump
bằng cách sử dụng Công cụ Wireshark hoặc công cụ tương tự . Dưới đây là phân tích mẫu về tcpdump bằng Wireshark:
- Số gói tin 13, 14 và 15 cho thấy Thông báo Bộ xử lý đang thiết lập kết nối với máy chủ proxy thông qua TCP ba chiều quy trình bắt tay.
- Trong gói 16, Trình xử lý thư đã 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 của gói một cách chi tiết và cụ thể là Tiêu đề máy chủ lưu trữ được chuyển đến máy chủ proxy bởi Thông báo Bộ xử lý.
- Mẫu ở trên cho thấy Tiêu đề máy chủ lưu trữ
httpin.org
, 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ữ ở trênhttpin.org
, không thành công với 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 rằng Tiêu đề máy chủ phải được 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 là 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ủ lưu trữ (Host Header) phải luôn chứa máy chủ phụ trợ tên máy chủ lưu trữ của mình, trong khi Trình xử lý thư đang gửi tên máy chủ máy chủ proxy, sau đó thực hiện các bước sau đây để 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ư như sau:
- Xem lại tệp
/opt/apigee/customer/application/message-processor.properties
trên từng Trình xử lý tin nhắn. Hãy đảm bảo rằng bạn đã thiết lập 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 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 ngay cả sau khi đã làm theo các hướng dẫn trên, hãy thu thập những thông tin sau thông tin chẩn đoán rồi liên hệ với Bộ phận hỗ trợ Apigee Edge:
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
Trong đó: 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ý thư
/opt/apigee/var/log/edge-message-processor/logs/system.log