Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Là một nhà phát triển làm việc với Apigee Edge, các hoạt động phát triển chính của bạn bao gồm định cấu hình proxy API hoạt động dưới dạng proxy cho API hoặc dịch vụ phụ trợ. Tài liệu này là một tài liệu tham khảo về tất cả các phần tử cấu hình có sẵn cho bạn khi tạo proxy API.
Nếu đang tìm hiểu cách tạo proxy API, bạn nên bắt đầu với chủ đề Xây dựng một API đơn giản proxy.
Các cách phổ biến nhất để chỉnh sửa cấu hình proxy là:
- Sử dụng trình chỉnh sửa XML trong giao diện người dùng Edge
- Tải xuống và chỉnh sửa cấu hình trên máy, như được mô tả trong phần Cục bộ phát triển cấu hình proxy.
Phát triển cục bộ cấu hình proxy
Bạn có thể tải xuống các cấu hình proxy của mình để có thể chỉnh sửa chúng trên máy cục bộ. Thời gian khi bạn hoàn tất, sau đó tải kết quả lên Edge. Phương pháp này cho phép bạn tích hợp proxy các cấu hình của bạn vào kiểm soát nguồn, tạo phiên bản và quy trình làm việc chia sẻ khác. Ngoài ra, bằng cách làm việc trên cấu hình proxy cục bộ, bạn có thể sử dụng trình chỉnh sửa và xác thực XML của riêng mình và các công cụ lập mô hình tuỳ chỉnh.
Phần này mô tả cách sử dụng giao diện người dùng để tải xuống, chỉnh sửa cấu trúc proxy hiện có,
sau đó tải lại lên Edge để triển khai. Bạn cũng có thể sử dụng
apigeetool
để tải xuống và triển khai cấu hình proxy mới (bằng cách sử dụng fetchproxy
và
deployproxy
.)
Cách chỉnh sửa cấu hình proxy cục bộ bằng giao diện người dùng:
- Tải cấu hình proxy hiện tại xuống trong giao diện người dùng Edge. (Trong các proxy API khung hiển thị, chọn Project (Dự án) > Tải bản sửa đổi xuống.)
- Trên máy cục bộ, hãy tạo một thư mục mới và mở rộng tệp ZIP đã tải xuống thành
nó.
Để mở rộng tệp ZIP, bạn có thể sử dụng một tiện ích như
unzip
, như ví dụ cho thấy:mkdir myappdir
unzip ./my-app_app_rev3_2019_04_20.zip -d myappdir
Nội dung mở rộng của tệp ZIP phải giống với cấu trúc được mô tả trong Cấu trúc proxy API.
- Chỉnh sửa các tệp nguồn nếu cần. Để có nội dung mô tả về các tệp nguồn trong proxy
cấu hình, xem
Tệp cấu hình và
cấu trúc thư mục của proxy API.
Ví dụ: để bật giám sát sức khoẻ ở proxy API của bạn, hãy chỉnh sửa tệp cấu hình TargetEndpoint trong Thư mục
/apiproxy/targets/
. Tệp mặc định trong thư mục này làdefault.xml
, mặc dù có thể có các tệp với tên khác nếu bạn sử dụng mục tiêu có điều kiện.Trong trường hợp này, nếu tệp cấu hình TargetEndpoint và thư mục của tệp đó không tồn tại, tạo chúng.
- Sau khi hoàn tất việc chỉnh sửa các tệp cấu hình proxy, hãy đảm bảo bạn lưu các thay đổi của mình.
- Thay đổi sang thư mục mới mà bạn đã tạo khi mở rộng tệp ZIP (thư mục gốc của
các tệp cấu hình mở rộng).
Ví dụ: nếu bạn đã mở rộng các tệp vào thư mục
/myappdir
, hãy thay đổi thành thư mục đó, như trong ví dụ sau đây:cd myappdir
Bạn nên đổi sang thư mục này trước khi lưu trữ lại các tệp cấu hình proxy vì bạn không muốn đưa thư mục
/myappdir
vào tệp ZIP. Thư mục cấp cao nhất trong tệp ZIP phải là/apiproxy
. - Lưu trữ lại các tệp cấu hình proxy, bao gồm cả các tệp mới hoặc tệp đã thay đổi. Bạn có thể sử dụng
phần mềm tiện ích như
zip
, trong ví dụ sau đây:zip my-new-proxy.zip -r .
Thư mục cấp cao nhất trong tệp ZIP phải là
/apiproxy
.Không có yêu cầu đặc biệt nào cho tên tệp ZIP. Ví dụ: bạn không cần tăng số bản sửa đổi hoặc chỉ định ngày trong tên tệp, nhưng làm điều này có thể hữu ích cho việc gỡ lỗi hoặc kiểm soát nguồn.
Edge tăng số bản sửa đổi của cấu hình proxy mới cho bạn khi bạn tải lên nó.
- Tải cấu hình proxy mới lên bằng giao diện người dùng Edge. (Trong Proxy API
khung hiển thị, chọn Project (Dự án) > Tải Bản sửa đổi mới lên.)
Nếu bạn gặp một lỗi như Bundle is invalid. Empty bundle., hãy đảm bảo rằng Thư mục cấp cao nhất của tệp ZIP là
/apiproxy
. Nếu không, hãy lưu trữ lại các tệp cấu hình proxy từ gốc của thư mục mở rộng.Sau khi tải cấu hình proxy mới lên, Edge tăng số bản sửa đổi và hiển thị báo cáo đó trong chế độ xem Revision Summary (Tóm tắt về bản sửa đổi).
Edge không triển khai bản sửa đổi mới cho bạn sau khi bạn tải bản sửa đổi đó lên bằng giao diện người dùng.
- Triển khai bản sửa đổi mới.
Để biết thêm thông tin, hãy xem Hướng dẫn: Cách tải proxy xuống bằng giao diện người dùng và API quản lý trong Cộng đồng Apigee.
Cấu trúc proxy API
Proxy API bao gồm cấu hình sau:
Cấu hình cơ sở | Chế độ cài đặt cấu hình chính cho proxy API. Xem phần Cơ sở Cấu hình. |
Cấu hình điểm cuối proxy | Yêu cầu về chế độ cài đặt cho kết nối HTTP đến (từ việc yêu cầu ứng dụng đến Apigee Edge), và quy trình phản hồi cũng như tệp đính kèm về chính sách. Hãy xem ProxyEndpoint. |
Cấu hình TargetEndpoint | Chế độ cài đặt cho kết nối HTTP đi (từ Apigee Edge đến dịch vụ phụ trợ), luồng yêu cầu và phản hồi, cũng như tệp đính kèm chính sách. Hãy xem phần TargetEndpoint. |
Luồng | Các quy trình phản hồi và yêu cầu ProxyEndpoint và TargetEndpoint mà chính sách có thể được áp dụng được đính kèm. Hãy xem phần Luồng. |
Chính sách | Các tệp cấu hình có định dạng XML tuân thủ giản đồ chính sách Apigee Edge. Xem Chính sách. |
Tài nguyên | Các tập lệnh, tệp JAR và tệp XML được tham chiếu theo chính sách để thực thi logic tuỳ chỉnh. Xem Tài nguyên. |
Cấu trúc thư mục proxy API và nội dung
Các thành phần trong bảng trên được xác định bởi các tệp cấu hình trong phần sau cấu trúc thư mục:
Tệp và thư mục cấu hình cấu trúc của proxy API
Phần này giải thích các tệp cấu hình và cấu trúc thư mục của proxy API.
Cấu hình cơ sở
/apiproxy/weatherapi.xml
Cấu hình cơ sở của proxy API, xác định tên của proxy API. Tên phải là duy nhất trong tổ chức.
Cấu hình mẫu:
<APIProxy name="weatherapi"> </APIProxy>
Phần tử cấu hình cơ sở
Tên | Mô tả | Mặc định | Bắt buộc? |
---|---|---|---|
APIProxy |
|||
name |
Tên của proxy API. Phải là tên riêng biệt trong một tổ chức. Các nhân vật
mà bạn được phép sử dụng trong tên này sẽ bị hạn chế ở những điều sau:
A-Za-z0-9_- |
Không áp dụng | Có |
revision |
Số bản sửa đổi của cấu hình proxy API. Bạn không cần phải đặt rõ ràng số bản sửa đổi, vì Apigee Edge tự động theo dõi bản sửa đổi hiện tại của API proxy. | Không áp dụng | Không |
ConfigurationVersion |
Phiên bản của giản đồ cấu hình proxy API mà proxy API này tuân thủ. Chiến lược phát hành đĩa đơn giá trị chỉ được hỗ trợ hiện tại là largeVersion 4 và secondaryVersion 0. Chế độ cài đặt này có thể được sử dụng trong tương lai để tạo điều kiện cho sự phát triển của định dạng proxy API. | 4 | Không |
Description |
Nội dung mô tả bằng văn bản của proxy API. Nếu được cung cấp, nội dung mô tả sẽ hiển thị bằng giao diện người dùng quản lý Edge. | Không áp dụng | Không |
DisplayName |
Tên thân thiện với người dùng có thể khác với thuộc tính name của
Cấu hình proxy API. |
Không áp dụng | Không |
Policies |
Danh sách các chính sách trong thư mục /policies của proxy API này. Bạn sẽ
thường chỉ nhìn thấy phần tử này khi proxy API được tạo bằng giao diện người dùng quản lý Edge.
Đây chỉ là một "tệp kê khai" , được thiết kế để cung cấp khả năng hiển thị nội dung của
proxy API. |
Không áp dụng | Không |
ProxyEndpoints |
Danh sách ProxyEndpoints trong thư mục /proxies của proxy API này. Bạn
thường sẽ chỉ nhìn thấy phần tử này khi proxy API được tạo bằng Edge
giao diện người dùng quản lý. Đây chỉ là một "tệp kê khai" được thiết kế để giúp bạn nắm bắt thông tin
nội dung của proxy API. |
Không áp dụng | Không |
Resources |
Danh sách tài nguyên (JavaScript, Python, Java, ValueTrack) trong /resources
của proxy API này. Thông thường, bạn sẽ chỉ thấy phần tử này khi proxy API
được tạo bằng giao diện người dùng quản lý Edge. Đây chỉ là một "tệp kê khai" được thiết kế để
cho biết các nội dung của proxy API. |
Không áp dụng | Không |
Spec |
Xác định Đặc tả OpenAPI được liên kết với proxy API. Giá trị
được đặt thành URL hoặc đường dẫn trong kho thông số kỹ thuật. Lưu ý: Kho thông số kỹ thuật có trong trải nghiệm New Edge . Để biết thêm thông tin về kho thông số kỹ thuật, hãy xem Quản lý và chia sẻ . |
Không áp dụng | Không |
TargetServers |
Danh sách TargetServers được tham chiếu trong mọi TargetEndpoints của proxy API này. Bạn sẽ thường chỉ nhìn thấy phần tử này khi proxy API được tạo bằng giao diện người dùng quản lý Edge. Đây chỉ là một "tệp kê khai" , được thiết kế để cung cấp khả năng hiển thị nội dung của proxy API. | Không áp dụng | Không |
TargetEndpoints |
Danh sách TargetEndpoints trong thư mục /targets của proxy API này. Bạn
thường sẽ chỉ nhìn thấy phần tử này khi proxy API được tạo bằng Edge
giao diện người dùng quản lý. Đây chỉ là một "tệp kê khai" được thiết kế để giúp bạn nắm bắt thông tin
nội dung của proxy API. |
Không áp dụng | Không |
ProxyEndpoint
Hình ảnh sau đây cho thấy quy trình yêu cầu/phản hồi:
/apiproxy/proxies/default.xml
Cấu hình ProxyEndpoint xác định giao diện đến (dành cho máy khách) của một API proxy. Khi định cấu hình ProxyEndpoint, bạn đang thiết lập cấu hình mạng xác định cách các ứng dụng khách ("apps") gọi API qua proxy.
Cấu hình ProxyEndpoint mẫu sau đây sẽ được lưu trữ trong
/apiproxy/proxies
:
<ProxyEndpoint name="default"> <PreFlow/> <Flows/> <PostFlow/> <HTTPProxyConnection> <BasePath>/weather</BasePath> <VirtualHost>default</VirtualHost> </HTTPProxyConnection> <FaultRules/> <DefaultFaultRule/> <RouteRule name="default"> <TargetEndpoint>default</TargetEndpoint> </RouteRule> </ProxyEndpoint>
Các phần tử cấu hình bắt buộc trong một ProxyEndpoint cơ bản là:
Cấu hình điểm cuối proxy Elements
Tên | Mô tả | Mặc định | Bắt buộc? |
---|---|---|---|
ProxyEndpoint |
|||
name |
Tên của ProxyEndpoint. Phải là duy nhất trong cấu hình proxy API, khi
(trong một số ít trường hợp) nhiều ProxyEndpoints được xác định. Các ký tự bạn được phép sử dụng
trong tên sẽ bị hạn chế như sau: A-Za-z0-9._\-$ % . |
Không áp dụng | Có |
PreFlow |
Xác định các chính sách trong luồng PreFlow của một yêu cầu hoặc phản hồi. | Không áp dụng | Có |
Flows |
Xác định các chính sách trong các luồng có điều kiện của một yêu cầu hoặc phản hồi.
|
Không áp dụng | Có |
PostFlow |
Xác định các chính sách trong luồng PostFlow của một yêu cầu hoặc phản hồi.
|
Không áp dụng | Có |
HTTPProxyConnection |
Xác định địa chỉ mạng và đường dẫn URI được liên kết với proxy API | ||
BasePath |
Chuỗi bắt buộc xác định duy nhất đường dẫn URI mà Apigee Edge sử dụng để định tuyến thông báo đến tới proxy API thích hợp. BasePath là một mảnh URI (ví dụ: Sử dụng ký tự đại diện trong đường dẫn cơ sở Bạn có thể sử dụng một hoặc nhiều "*" ký tự đại diện trong đường dẫn cơ sở proxy API. Ví dụ: cơ sở
đường dẫn của Lưu ý quan trọng: Apigee KHÔNG hỗ trợ sử dụng ký tự đại diện "*" với tư cách là người đầu tiên
là phần tử của một đường dẫn cơ sở. Ví dụ: thuộc tính này KHÔNG được hỗ trợ: |
/ | Có |
VirtualHost |
Liên kết proxy API với các URL cơ sở cụ thể của một môi trường. VirtualHost là một cấu hình được đặt tên xác định một hoặc nhiều URL cho môi trường. Các VirtualHost có tên được xác định cho một ProxyEndpoint sẽ xác định các miền và cổng trên proxy API bị hiển thị và theo đó là URL mà ứng dụng sử dụng để gọi một API proxy. Theo mặc định, 2 VirtualHost có tên được xác định cho một môi trường:
|
mặc định | Không |
Properties |
Bạn có thể xác định một tập hợp các cài đặt cấu hình HTTP tùy chọn là thuộc tính của
<ProxyEndpoint> . |
Không áp dụng | Không |
FaultRules |
Xác định cách ProxyEndpoint phản ứng với lỗi. Quy tắc lỗi chỉ định hai
mục:
Hãy xem phần Xử lý lỗi. |
Không áp dụng | Không |
DefaultFaultRule |
Xử lý mọi lỗi (hệ thống, truyền tải, thông báo hoặc chính sách) không được nêu rõ ràng do một quy tắc lỗi khác xử lý. Hãy xem phần Xử lý lỗi. |
Không áp dụng | Không |
RouteRule |
Xác định đích đến của thông báo yêu cầu đến sau khi được xử lý bằng Quy trình yêu cầu ProxyEndpoint. Thông thường, RouteRule trỏ đến một TargetEndpoint được đặt tên nhưng cũng có thể trỏ trực tiếp đến một URL. | ||
Name |
Thuộc tính bắt buộc, cung cấp tên cho RouteRule. Các nhân vật của bạn
được phép sử dụng trong tên này bị hạn chế như sau: A-Za-z0-9._\-$ % . Cho
ví dụ: Cat2 %_ là tên pháp lý. |
Không áp dụng | Có |
Condition |
Một câu lệnh có điều kiện không bắt buộc dùng để định tuyến động trong thời gian chạy. Câu lệnh có điều kiện RouteRules rất hữu ích, chẳng hạn như giúp định tuyến dựa trên nội dung nhằm hỗ trợ phần phụ trợ lập phiên bản. | Không áp dụng | Không |
TargetEndpoint |
Chuỗi không bắt buộc xác định cấu hình TargetEndpoint được đặt tên. Một
TargetEndpoint là bất kỳ TargetEndpoint nào được xác định trong cùng một proxy API trong
thư mục Bằng cách đặt tên cho một TargetEndpoint, bạn cho biết nơi thư yêu cầu sẽ được chuyển tiếp sau khi được xử lý bằng quy trình yêu cầu ProxyEndpoint. Lưu ý rằng đây là bước tuỳ chọn cài đặt. ProxyEndpoint có thể gọi trực tiếp một URL. Ví dụ: tài nguyên JavaScript hoặc Java, hoạt động với vai trò của một ứng dụng HTTP, có thể thực hiện nhiệm vụ cơ bản của TargetEndpoint dùng để chuyển tiếp các yêu cầu đến một dịch vụ phụ trợ. |
Không áp dụng | Không |
URL | Một chuỗi tuỳ chọn xác định địa chỉ mạng đi được gọi bởi
ProxyEndpoint, bỏ qua mọi cấu hình TargetEndpoint có thể được lưu trữ trong
/targets |
Không áp dụng | Không |
Cách định cấu hình RouteRules
TargetEndpoint có tên là một tệp cấu hình trong /apiproxy/targets
để
RouteRule sẽ chuyển tiếp một yêu cầu sau khi được ProxyEndpoint xử lý.
Ví dụ: RouteRule sau đây đề cập đến cấu hình
/apiproxy/targets/myTarget.xml
:
<RouteRule name="default"> <TargetEndpoint>myTarget</TargetEndpoint> </RouteRule>
Gọi URL trực tiếp
ProxyEndpoint cũng có thể trực tiếp gọi một dịch vụ phụ trợ. Lệnh gọi URL trực tiếp sẽ bỏ qua mọi
có tên là cấu hình TargetEndpoints trong /apiproxy/targets
). Vì lý do này,
TargetEndpoint là một cấu hình proxy API không bắt buộc, mặc dù trên thực tế, lệnh gọi trực tiếp
từ ProxyEndpoint, bạn không nên sử dụng.
Ví dụ: RouteRule sau đây thực hiện lệnh gọi HTTP đến
http://api.mycompany.com/v2
.
<RouteRule name="default"> <URL>http://api.mycompany.com/v2</URL> </RouteRule>
Tuyến đường có điều kiện
RouteRules có thể được xâu chuỗi để hỗ trợ định tuyến động trong thời gian chạy. Yêu cầu đến có thể là được định tuyến đến cấu hình TargetEndpoint đã đặt tên, trực tiếp đến URL hoặc đến một tổ hợp cả hai, dựa trên tiêu đề HTTP, nội dung thư, tham số truy vấn hoặc thông tin theo ngữ cảnh như thời gian ngày, ngôn ngữ, v.v.
RouteRules có điều kiện hoạt động giống như các câu lệnh có điều kiện khác trên Apigee Edge. Hãy xem Tài liệu tham khảo về điều kiện và Tài liệu tham khảo về biến.
Ví dụ: tổ hợp RouteRule sau đây sẽ đánh giá yêu cầu đến để xác minh trước
giá trị của tiêu đề HTTP. Nếu tiêu đề HTTP routeTo
có giá trị
TargetEndpoint1
, sau đó yêu cầu được chuyển tiếp đến TargetEndpoint có tên là
TargetEndpoint1
Nếu không thì yêu cầu đến sẽ được chuyển tiếp đến
http://api.mycompany.com/v2
.
<RouteRule name="MyRoute"> <Condition>request.header.routeTo = "TargetEndpoint1"</Condition> <TargetEndpoint>TargetEndpoint1</TargetEndpoint> </RouteRule> <RouteRule name="default"> <URL>http://api.mycompany.com/v2</URL> </RouteRule>
Tuyến rỗng
Có thể xác định RouteRule rỗng để hỗ trợ các trường hợp mà thông báo yêu cầu không cần được chuyển tiếp đến TargetEndpoint. Điều này rất hữu ích khi ProxyEndpoint thực hiện tất cả quá trình xử lý cần thiết, chẳng hạn như bằng cách sử dụng JavaScript để gọi một dịch vụ bên ngoài hoặc truy xuất dữ liệu từ tra cứu đến Dịch vụ API kho khoá/giá trị.
Ví dụ: đoạn mã sau đây xác định một Tuyến rỗng:
<RouteRule name="GoNowhere"/>
Các tuyến rỗng có điều kiện có thể hữu ích. Trong ví dụ sau, một Tuyến rỗng được định cấu hình để
thực thi khi tiêu đề HTTP request.header.X-DoNothing
có giá trị khác với
null
<RouteRule name="DoNothingOnDemand"> <Condition>request.header.X-DoNothing != null</Condition> </RouteRule>
Hãy nhớ rằng RouteRules có thể được xâu chuỗi, vì vậy, một Tuyến rỗng có điều kiện thường sẽ là một thành phần của tập hợp RouteRules được thiết kế để hỗ trợ việc định tuyến có điều kiện.
Việc sử dụng tuyến đường rỗng có điều kiện trong thực tế sẽ hỗ trợ chức năng lưu vào bộ nhớ đệm. Bằng cách sử dụng giá trị của biến được đặt bởi Chính sách bộ nhớ đệm, bạn có thể định cấu hình proxy API để thực thi Định tuyến rỗng khi một mục nhập được phân phát từ bộ nhớ đệm.
<RouteRule name="DoNothingUnlessTheCacheIsStale"> <Condition>lookupcache.LookupCache-1.cachehit is true</Condition> </RouteRule>
TargetEndpoint
TargetEndpoint là đường đi tương đương với ProxyEndpoint. TargetEndpoint có chức năng là máy khách đến dịch vụ phụ trợ hoặc API – dịch vụ này gửi yêu cầu và nhận phản hồi.
Proxy API không cần có TargetEndpoints. ProxyEndpoints có thể được định cấu hình để gọi URL trực tiếp. Proxy API không có TargetEndpoints thường chứa một ProxyEndpoint gọi trực tiếp dịch vụ phụ trợ hoặc dịch vụ được định cấu hình để gọi một dịch vụ bằng Java hoặc JavaScript.
Cấu hình điểm cuối đích
/targets/default.xml
TargetEndpoint xác định kết nối đi từ Apigee Edge đến một dịch vụ khác hoặc nguồn.
Dưới đây là cấu hình TargetEndpoint mẫu:
<TargetEndpoint name="default"> <PreFlow/> <Flows/> <PostFlow/> <HTTPTargetConnection> <URL>http://mocktarget.apigee.net</URL> <SSLInfo/> </HTTPTargetConnection> <FaultRules/> <DefaultFaultRule/> <ScriptTarget/> <LocalTargetConnection/> </TargetEndpoint>
Cấu hình điểm cuối đích Elements
TargetEndpoint có thể gọi một mục tiêu theo một trong các cách sau:
- HTTPTargetConnection cho lệnh gọi HTTP(S)
- LocalTargetConnection để chuỗi proxy đến proxy cục bộ
- ScriptTarget cho các lệnh gọi đến một ứng dụng được lưu trữ trên Edge Tập lệnh Node.js
Chỉ định cấu hình một trong các chỉ số này trong TargetEndpoint.
Tên | Mô tả | Mặc định | Bắt buộc? |
---|---|---|---|
TargetEndpoint |
|||
name |
Tên của TargetEndpoint phải là duy nhất trong proxy API
. Tên của TargetEndPoint được dùng trong ProxyEndpoint RouteRule để
các yêu cầu trực tiếp để xử lý đi. Các ký tự bạn được phép sử dụng trong tên
bị hạn chế ở những mục sau: A-Za-z0-9._\-$ % . |
Không áp dụng | Có |
PreFlow |
Xác định các chính sách trong luồng PreFlow của một yêu cầu hoặc phản hồi. | Không áp dụng | Có |
Flows |
Xác định các chính sách trong các luồng có điều kiện của một yêu cầu hoặc phản hồi.
|
Không áp dụng | Có |
PostFlow |
Xác định các chính sách trong luồng PostFlow của một yêu cầu hoặc phản hồi.
|
Không áp dụng | Có |
HTTPTargetConnection |
Với các phần tử con, chỉ định phạm vi tiếp cận tài nguyên phụ trợ qua HTTP. Nếu bạn sử dụng HTTPTargetConnection, đừng định cấu hình các loại kết nối đích khác (ScriptTarget hoặc LocalTargetConnection). |
||
URL |
Xác định địa chỉ mạng của dịch vụ phụ trợ mà TargetEndpoint chuyển tiếp đến yêu cầu tin nhắn. | Không áp dụng | Không |
LoadBalancer |
Xác định một hoặc nhiều cấu hình TargetServer được đặt tên. Máy chủ mục tiêu được đặt tên có thể sử dụng cấu hình để cân bằng tải xác định 2 hoặc nhiều cấu hình điểm cuối kết nối. Bạn cũng có thể sử dụng TargetServers để tách cấu hình proxy API khỏi thông tin cụ thể URL điểm cuối của dịch vụ phụ trợ. Xem phần Tải cân bằng giữa các máy chủ phụ trợ. |
Không áp dụng | Không |
Properties |
Bạn có thể xác định một tập hợp các cài đặt cấu hình HTTP tùy chọn là thuộc tính của
<TargetEndpoint> . |
Không áp dụng | Không |
SSLInfo |
Tùy ý xác định cài đặt TLS/SSL trên TargetEndpoint để kiểm soát TLS/SSL kết nối giữa proxy API và dịch vụ mục tiêu. Xem Cấu hình điểm cuối đích TLS/SSL. | Không áp dụng | Không |
LocalTargetConnection |
Với các phần tử con, chỉ định một tài nguyên cần truy cập cục bộ, bỏ qua mạng
như cân bằng tải và trình xử lý tin nhắn.
Để chỉ định tài nguyên mục tiêu, hãy đưa phần tử con APIProxy (với phần tử con phần tử ProxyEndpoint) hoặc phần tử con của Đường dẫn. Để biết thêm thông tin, hãy xem phần Tạo chuỗi proxy API khi kết hợp cùng nhau. Nếu bạn sử dụng LocalTargetConnection, đừng định cấu hình các loại kết nối mục tiêu khác (HTTPTargetConnection hoặc ScriptTarget). |
||
APIProxy |
Chỉ định tên của proxy API để dùng làm mục tiêu cho các yêu cầu. Proxy mục tiêu phải trong cùng một tổ chức và môi trường với yêu cầu gửi proxy. Đây là một thay thế cho việc sử dụng phần tử Đường dẫn. | Không áp dụng | Không |
ProxyEndpoint |
Dùng với APIProxy để chỉ định tên của ProxyEndpoint của proxy mục tiêu. | Không áp dụng | Không |
Path |
Chỉ định đường dẫn điểm cuối của proxy API để dùng làm mục tiêu cho các yêu cầu. Mục tiêu proxy phải trong cùng một tổ chức và môi trường với yêu cầu gửi proxy. Chiến dịch này là giải pháp thay thế cho việc sử dụng APIProxy. | Không áp dụng | Không |
FaultRules |
Xác định cách TargetEndpoint phản ứng với lỗi. Quy tắc lỗi chỉ định hai
mục:
Hãy xem phần Xử lý lỗi. |
Không áp dụng | Không |
DefaultFaultRule |
Xử lý mọi lỗi (hệ thống, truyền tải, thông báo hoặc chính sách) không được nêu rõ ràng do một FaultRule khác xử lý. Hãy xem phần Xử lý lỗi. |
Không áp dụng | Không |
ScriptTarget |
|||
ResourceURL |
Xác định loại tài nguyên (nút) và tên của tập lệnh Node.js chính triển khai chức năng TargetEndpoint.
Tập lệnh cần được đi kèm với tệp tài nguyên của proxy API. Xem bài viết Thêm Node.js vào một proxy API hiện có. Nếu bạn sử dụng ScriptTarget, thì đừng định cấu hình các loại kết nối đích khác (HTTPTargetConnection hoặc LocalTargetConnection). |
Không áp dụng | Có |
EnvironmentVariable |
Tùy ý chuyển các biến môi trường vào tập lệnh Node.js chính. Xem bài viết Hiểu Edge hỗ trợ cho các mô-đun Node.js. |
Không áp dụng | Không |
Arguments |
Tùy ý truyền các đối số đến tập lệnh Node.js chính. Xem bài viết Hiểu Edge hỗ trợ cho các mô-đun Node.js. |
Không áp dụng | Không |
Cấu hình điểm cuối đích TLS/SSL
TargetEndpoints thường cần quản lý các kết nối HTTPS có phần phụ trợ không đồng nhất cơ sở hạ tầng. Vì lý do này, một số cài đặt cấu hình TLS/SSL được hỗ trợ.
TLS/SSL Phần tử cấu hình TargetEndpoint
Tên | Mô tả | Mặc định | Bắt buộc? |
---|---|---|---|
SSLInfo |
|||
Enabled |
Cho biết liệu TLS/SSL có được bật cho điểm cuối hay không.
Giá trị mặc định là true nếu <URL> chỉ định giao thức HTTPS,
và false nếu <URL> chỉ định HTTP. |
true nếu <URL> chỉ định HTTPS |
Không |
TrustStore |
Kho khoá chứa các chứng chỉ máy chủ đáng tin cậy. | Không áp dụng | Không |
ClientAuthEnabled |
Chế độ cài đặt bật tính năng xác thực máy khách đi (TLS/SSL 2 chiều) | false | Không |
KeyStore |
Kho khoá chứa các khoá riêng tư dùng để xác thực ứng dụng đi | Không áp dụng | Có (nếu ClientAuthEnabled là true) |
KeyAlias |
Bí danh khoá của khoá riêng tư dùng để xác thực ứng dụng đi | Không áp dụng | Có (nếu ClientAuthEnabled là true) |
Ciphers |
Các thuật toán mật mã được hỗ trợ cho TLS/SSL đi. Nếu không có thuật toán mật mã nào được chỉ định, thì tất cả các thuật toán mật mã có sẵn cho JVM sẽ được phép. Để hạn chế thuật toán mật mã, hãy thêm các phần tử sau liệt kê các thuật toán mật mã được hỗ trợ: <Ciphers> <Cipher>TLS_RSA_WITH_3DES_EDE_CBC_SHA</Cipher> <Cipher>TLS_RSA_WITH_DES_CBC_SHA</Cipher> </Ciphers> |
Không áp dụng | Không |
Protocols |
Các giao thức được hỗ trợ cho TLS/SSL đi. Nếu không có giao thức nào được chỉ định, thì tất cả Các giao thức có sẵn cho JVM sẽ được cho phép. Để hạn chế các giao thức, hãy thêm các phần tử sau đây liệt kê các giao thức được hỗ trợ: <Protocols> <Protocol>TLSv1.1</Protocol> <Protocol>TLSv1.2</Protocol> </Protocols> |
Không áp dụng | Không |
CommonName |
Nếu được chỉ định, một giá trị mà tên thông thường của chứng chỉ mục tiêu sẽ được xác thực. Giá trị này chỉ hợp lệ cho các cấu hình TargetEndpoint và TargetServer. Không phải hợp lệ cho các cấu hình VirtualHost. Theo mặc định, giá trị được chỉ định sẽ khớp chính xác với tên thông thường của chứng chỉ đích.
Ví dụ: dùng Nếu bạn muốn, Apigee có thể so khớp với ký tự đại diện thông qua thuộc tính Ví dụ: tên thông thường được chỉ định là <CommonName wildcardMatch="true">*.myhost.com</CommonName> |
Không áp dụng | Không |
Mẫu TargetEndpoint khi bật tính năng xác thực ứng dụng đi
<TargetEndpoint name="default"> <HttpTargetConnection> <URL>https://myservice.com</URL> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>myKeystore</KeyStore> <KeyAlias>myKey</KeyAlias> <TrustStore>myTruststore</TrustStore> </SSLInfo> </HttpTargetConnection> </TargetEndpoint>
Để biết hướng dẫn chi tiết, hãy xem Định cấu hình TLS từ Edge đến phần phụ trợ (Đám mây và Đám mây riêng tư).
Sử dụng các biến luồng để đặt giá trị TLS/SSL một cách linh động
Bạn cũng có thể tự động thiết lập chi tiết TLS/SSL để hỗ trợ các yêu cầu linh hoạt về thời gian chạy. Ví dụ: nếu proxy của bạn kết nối với hai mục tiêu có thể khác nhau (mục tiêu thử nghiệm và mục tiêu mục tiêu chính thức), bạn có thể thiết lập proxy API theo phương thức lập trình để phát hiện môi trường đó gọi cũng như đặt động các tham chiếu đến kho khoá và kho tin cậy thích hợp. Nội dung sau đây Bài viết trên Cộng đồng Apigee giải thích trường hợp này chi tiết hơn và cung cấp các API có thể triển khai ví dụ về proxy: https://community.apigee.com/articles/21424/dynamic-sslinfo-for-targetendpoint-using-variable.html.
Trong ví dụ sau đây, cách thẻ <SSLInfo>
sẽ được đặt trong một
Cấu hình TargetEndpoint, các giá trị có thể được cung cấp trong thời gian chạy, ví dụ như bằng Java
Chú thích, chính sách JavaScript hoặc chính sách Chỉ định thông báo. Sử dụng bất cứ biến nào trong thông báo
chứa các giá trị bạn muốn đặt.
Biến chỉ được phép trong những phần tử sau đây.
<SSLInfo> <Enabled>{myvars.ssl.enabled}</Enabled> <ClientAuthEnabled>{myvars.ssl.client.auth.enabled}</ClientAuthEnabled> <KeyStore>{myvars.ssl.keystore}</KeyStore> <KeyAlias>{myvars.ssl.keyAlias}</KeyAlias> <TrustStore>{myvars.ssl.trustStore}</TrustStore> </SSLInfo>
Sử dụng các tham chiếu để đặt giá trị TLS/SSL một cách linh động
Khi định cấu hình TargetEndpoint sử dụng HTTPS, bạn phải xem xét trường hợp khi Chứng chỉ TLS/SSL hết hạn hoặc bạn phải cập nhật chứng chỉ này khi cấu hình hệ thống thay đổi. Trong một Edge dành cho cài đặt Đám mây riêng tư, khi định cấu hình TLS/SSL bằng cách sử dụng các giá trị tĩnh hoặc bằng cách bằng cách sử dụng các biến luồng, có khả năng bạn sẽ phải khởi động lại Trình xử lý thông báo.
Để biết thêm thông tin, hãy xem phần Cập nhật TLS chứng chỉ.
Tuy nhiên, bạn có thể tuỳ ý định cấu hình TargetEndpoint để sử dụng thông tin tham chiếu đến kho khoá hoặc Truststore thay thế. Lợi thế của việc sử dụng tệp đối chiếu là bạn có thể cập nhật tham chiếu đến một kho khoá hoặc kho tin cậy khác để cập nhật chứng chỉ TLS/SSL mà không cần phải khởi động lại Trình xử lý tin nhắn.
Ví dụ: dưới đây là một TargetEndpoint sử dụng một tệp tham chiếu đến kho khoá:
<SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>ref://keystoreref</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> </SSLInfo>
Sử dụng lệnh gọi API POST sau để tạo tham chiếu có tên keystoreref:
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \ -d '<ResourceReference name="keystoreref"> <Refers>myTestKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:password
Tệp tham chiếu chỉ định tên và loại của kho khoá.
Sử dụng lệnh gọi API GET sau để xem tệp tham chiếu:
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password
Để sau này thay đổi tham chiếu để trỏ đến một kho khoá khác, hãy đảm bảo rằng bí danh đó đã cùng một tên, hãy sử dụng lệnh gọi PUT sau:
curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \ -d '<ResourceReference name="keystoreref"> <Refers>myNewKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:password
TargetEndpoint với cân bằng tải mục tiêu
TargetEndpoints hỗ trợ cân bằng tải trên nhiều TargetServers được đặt tên bằng cách sử dụng ba lần tải các thuật toán cân bằng.
Để biết hướng dẫn chi tiết, hãy tham khảo bài viết Cân bằng tải trên phần phụ trợ máy chủ.
Chính sách
Thư mục /policies
trong proxy API chứa mọi chính sách có thể áp dụng
được đính kèm vào Luồng trong proxy API.
Phần tử cấu hình chính sách
Tên | Mô tả | Mặc định | Bắt buộc? |
---|---|---|---|
Policy |
|||
name |
Tên nội bộ của chính sách. Các ký tự mà bạn có thể sử dụng trong tên bị hạn chế
thành: (Không bắt buộc) Bạn có thể dùng phần tử |
Không áp dụng | Có |
enabled |
Hãy đặt thành Đặt thành |
đúng | Không |
continueOnError |
Đặt thành Đặt thành |
false | Không |
async |
Lưu ý: Thuộc tính này không khiến chính sách thực thi không đồng bộ.
Trong hầu hết các trường hợp, hãy để thuộc tính này theo mặc định là Khi bạn đặt thành Để sử dụng hành vi không đồng bộ trong proxy API, hãy xem Mô hình đối tượng JavaScript. |
false | Không |
Tệp đính kèm về chính sách
Hình ảnh sau đây cho thấy trình tự thực thi luồng proxy API:
Như đã trình bày ở trên:
Chính sách được đính kèm dưới dạng các bước xử lý trong Luồng. Tên của chính sách được dùng để tham chiếu chính sách sẽ được thực thi như một Bước xử lý. Định dạng của một tài liệu đính kèm về chính sách: như sau:
<Step><Name>MyPolicy</Name></Step>
Các chính sách được thực thi theo thứ tự đính kèm vào Quy trình. Ví dụ:
<Step><Name>FirstPolicy</Name></Step> <Step><Name>SecondPolicy</Name></Step>
Cấu hình tệp đính kèm về chính sách Elements
Tên | Mô tả | Mặc định | Bắt buộc? |
---|---|---|---|
Step |
|||
Name |
Tên của chính sách sẽ được thực thi theo định nghĩa Bước này. | Không áp dụng | Có |
Condition |
Câu lệnh có điều kiện xác định liệu chính sách có được thực thi hay không. Nếu một chính sách có một điều kiện liên kết, thì chính sách chỉ thực thi nếu điều kiện đó có giá trị là true (đúng). | Không áp dụng | Không |
Luồng
ProxyEndpoint và TargetEndpoint xác định quy trình cho thông báo yêu cầu và phản hồi đang xử lý. Quy trình xử lý bao gồm một quy trình yêu cầu và một quy trình phản hồi. Mỗi yêu cầu luồng và luồng phản hồi được chia nhỏ thành PreFlow, một hoặc nhiều thuộc tính "có điều kiện" (không bắt buộc) hoặc "đã đặt tên" và PostFlow.
- PreFlow: Luôn thực thi. Thực thi trước bất kỳ Flow có điều kiện nào.
- PostFlow: Luôn thực thi. Thực thi sau mọi Luồng có điều kiện.
Ngoài ra, bạn có thể thêm PostClientFlow vào ProxyEndpoint, hàm này sẽ thực thi sau
được trả về ứng dụng khách yêu cầu. Chỉ có MessageLogging và chính sách
Có thể đính kèm Tiện ích ghi nhật ký Google Stackdriver
vào quy trình này. PostClientFlow giảm độ trễ của proxy API và cung cấp thông tin cho
việc ghi nhật ký không được tính toán cho đến khi phản hồi được trả về cho ứng dụng, chẳng hạn như
client.sent.start.timestamp
và client.sent.end.timestamp
.Luồng được sử dụng
chủ yếu để đo khoảng thời gian giữa dấu thời gian bắt đầu và kết thúc cho phản hồi
.
Xem video hướng dẫn nhanh
Video: Xem video ngắn này về cách sử dụng tính năng Ghi nhật ký tin nhắn trong PostClientFlow.
Dưới đây là ví dụ về PostClientFlow có đính kèm chính sách ghi nhật ký thư.
... <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <PostClientFlow> <Request/> <Response> <Step> <Name>Message-Logging-1</Name> </Step> </Response> </PostClientFlow> ...
Quy trình xử lý proxy API sẽ thực thi Luồng theo trình tự sau:
Quy trình yêu cầu:
- Luồng trước yêu cầu proxy
- Luồng có điều kiện yêu cầu proxy (Không bắt buộc)
- Yêu cầu proxy PostFlow
- Luồng trước yêu cầu mục tiêu
- Luồng có điều kiện yêu cầu mục tiêu (Không bắt buộc)
- Yêu cầu mục tiêu PostFlow
Quy trình phản hồi:
- Trước luồng phản hồi mục tiêu
- Luồng có điều kiện của phản hồi mục tiêu (Không bắt buộc)
- Sau luồng phản hồi mục tiêu
- Trước luồng phản hồi proxy
- Luồng có điều kiện phản hồi proxy (Không bắt buộc)
- Luồng phản hồi proxy sau luồng
- Phản hồi của PostClientFlow (Không bắt buộc)
Bạn chỉ cần định cấu hình những Quy trình có tệp đính kèm chính sách trong ProxyEndpoint hoặc Cấu hình TargetEndpoint. Chỉ cần chỉ định PreFlow và PostFlow trong ProxyEndpoint hoặc Cấu hình TargetEndpoint khi cần thực thi một chính sách trong giai đoạn PreFlow hoặc PostFlow đang xử lý.
Trái ngược với các luồng có điều kiện, thứ tự của các phần tử PreFlow và PostFlow không quan trọng--Proxy API sẽ luôn thực thi từng API tại thời điểm thích hợp trong quy trình, bất kể chúng xuất hiện ở đâu trong cấu hình Điểm cuối.
Luồng có điều kiện
ProxyEndpoints và TargetEndpoints hỗ trợ số lượng luồng có điều kiện không giới hạn (cũng được gọi là "luồng được đặt tên").
Proxy API kiểm tra điều kiện được chỉ định trong luồng có điều kiện và nếu điều kiện đáp ứng thì các bước xử lý trong quy trình có điều kiện sẽ được proxy API thực thi. Nếu không đáp ứng điều kiện thì các bước xử lý trong luồng có điều kiện sẽ bị bỏ qua. Câu lệnh có điều kiện Các luồng được đánh giá theo thứ tự đã xác định trong proxy API và luồng đầu tiên có điều kiện là đã thực thi.
Bằng cách xác định luồng có điều kiện, bạn có thể áp dụng các bước xử lý trong proxy API dựa trên:
- URI yêu cầu
- Động từ HTTP (GET/PUT/POST/DELETE)
- Giá trị của thông số truy vấn, tiêu đề và thông số biểu mẫu
- Nhiều loại điều kiện khác
Ví dụ: luồng có điều kiện sau đây chỉ định rằng nó chỉ được thực thi khi
đường dẫn tài nguyên yêu cầu là /accesstoken
. Bất kỳ yêu cầu đến nào có
đường dẫn /accesstoken
khiến luồng này được thực thi, cùng với mọi chính sách
được gắn với luồng. Nếu đường dẫn yêu cầu không chứa hậu tố
/accesstoken
, thì luồng này không thực thi (mặc dù một luồng có điều kiện khác
có thể).
<Flows> <Flow name="TokenEndpoint"> <Condition>proxy.pathsuffix MatchesPath "/accesstoken"</Condition> <Request> <Step> <Name>GenerateAccessToken</Name> </Step> </Request> </Flow> </Flows>
Phần tử cấu hình luồng
Tên | Mô tả | Mặc định | Bắt buộc? |
---|---|---|---|
Flow |
Một quy trình xử lý yêu cầu hoặc phản hồi do một ProxyEndpoint xác định hoặc TargetEndpoint | ||
Name |
Tên riêng biệt của Luồng. | Không áp dụng | Có |
Condition |
Câu lệnh có điều kiện đánh giá một hoặc nhiều biến cần đánh giá là true hoặc false. Tất cả các Flow khác với các loại PreFlow và PostFlow được xác định trước đều phải xác định giá trị điều kiện thực thi. | Không áp dụng | Có |
Request |
Quy trình liên kết với quá trình xử lý thông báo Yêu cầu | Không áp dụng | Không |
Response |
Quy trình liên kết với quá trình xử lý tin nhắn Phản hồi | Không áp dụng | Không |
Xử lý bước
Trình tự sắp xếp của các Luồng có điều kiện được Apigee Edge thực thi. Luồng có điều kiện
thực thi từ trên xuống dưới. Luồng có điều kiện đầu tiên có điều kiện được đánh giá là
true
được thực thi và chỉ một Luồng có điều kiện được thực thi.
Ví dụ: trong cấu hình Quy trình sau đây, mọi yêu cầu đến không bao gồm
hậu tố đường dẫn /first
hoặc /second
sẽ khiến ThirdFlow
để thực thi, thực thi chính sách có tên là Return404
.
<Flows> <Flow name="FirstFlow"> <Condition>proxy.pathsuffix MatchesPath "/first"</Condition> <Request> <Step><Name>FirstPolicy</Name></Step> </Request> </Flow> <Flow name="SecondFlow"> <Condition>proxy.pathsuffix MatchesPath "/second"</Condition> <Request> <Step><Name>FirstPolicy</Name></Step> <Step><Name>SecondPolicy</Name></Step> </Request> </Flow> <Flow name="ThirdFlow"> <Request> <Step><Name>Return404</Name></Step> </Request> </Flow> </Flows>
Tài nguyên
"Tài nguyên" (tệp tài nguyên để sử dụng trong proxy API) là phép biến đổi tập lệnh, mã và BII có thể đính kèm vào Luồng bằng cách sử dụng chính sách. Các lệnh này xuất hiện trong "Tập lệnh" của API trình chỉnh sửa proxy trong giao diện người dùng quản lý.
Xem Tệp tài nguyên để biết tài nguyên.
Tài nguyên có thể được lưu trữ trong proxy API, môi trường hoặc tổ chức. Trong mỗi trường hợp, được tham chiếu theo tên trong một Chính sách. Dịch vụ API phân giải tên bằng cách chuyển từ API proxy, với môi trường, đến cấp tổ chức.
Chính sách có thể tham chiếu tài nguyên được lưu trữ ở cấp tổ chức trong bất kỳ môi trường nào. Các chính sách có thể tham chiếu tài nguyên được lưu trữ ở cấp môi trường trong môi trường đó. Đáp tài nguyên được lưu trữ ở cấp proxy API chỉ có thể được chính sách trong proxy API đó tham chiếu.