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
Chủ đề này mô tả các thuộc tính truyền tải mà bạn có thể đặt trong cấu hình TargetEndpoint và ProxyEndpoint để kiểm soát hành vi nhắn tin và kết nối. Để biết thông tin đầy đủ về cấu hình TargetEndpoint và ProxyEndpoint, hãy xem Tài liệu tham khảo về cấu hình của API proxy.
Thuộc tính truyền tải TargetEndpoint
Phần tử HTTPTargetConnection trong cấu hình TargetEndpoint xác định một tập hợp các thuộc tính truyền tải HTTP. Bạn có thể sử dụng các thuộc tính này để thiết lập cấu hình ở cấp độ truyền tải.
Các thuộc tính được đặt trên phần tử TargetEndpoint HTTPTargetConnection như minh hoạ dưới đây:
<TargetEndpoint name="default">
<HTTPTargetConnection>
<URL>http://mocktarget.apigee.net</URL>
<Properties>
<Property name="supports.http10">true</Property>
<Property name="request.retain.headers">User-Agent,Referer,Accept-Language</Property>
<Property name="retain.queryparams">apikey</Property>
</Properties>
<CommonName>COMMON_NAME_HERE</CommonName>
</HTTPTargetConnection>
</TargetEndpoint>Quy cách thuộc tính truyền tải TargetEndpoint
| Tên thuộc tính | Giá trị mặc định | Mô tả |
|---|---|---|
keepalive.timeout.millis |
60000 |
Thời gian chờ kết nối ở trạng thái rảnh cho kết nối đích trong nhóm kết nối. Nếu kết nối trong nhóm ở trạng thái rảnh quá giới hạn đã chỉ định, thì kết nối sẽ bị đóng. |
connect.timeout.millis |
|
Hết thời gian chờ kết nối đích. Edge trả về mã trạng thái HTTP |
io.timeout.millis |
55000 |
Nếu không có dữ liệu nào để đọc trong số lượng mili giây đã chỉ định hoặc nếu ổ cắm chưa sẵn sàng ghi dữ liệu trong số lượng mili giây đã chỉ định, thì giao dịch sẽ được coi là hết thời gian chờ.
Giá trị này phải luôn nhỏ hơn giá trị của thuộc tính proxy_read_timeout của máy chủ ảo. Giá trị này phải nhỏ hơn thời gian chờ mà Bộ định tuyến dùng để giao tiếp với Trình xử lý thông báo. Hãy xem phần Định cấu hình thời gian chờ của Bộ định tuyến để biết thêm thông tin. Hãy xem phần Đặt io.timeout.millis và api.timeout cho Edge để biết thêm. |
supports.http10 |
true |
Nếu đây là true và ứng dụng gửi yêu cầu 1.0, thì đích đến cũng sẽ nhận được yêu cầu 1.0. Nếu không, yêu cầu 1.1 sẽ được gửi đến mục tiêu. |
supports.http11 |
true |
Nếu đây là true và ứng dụng gửi yêu cầu 1.1, thì đích đến cũng sẽ nhận được yêu cầu 1.1, nếu không, yêu cầu 1.0 sẽ được gửi đến đích đến. |
use.proxy |
true |
Nếu bạn đặt thành true và chỉ định cấu hình proxy trong http.properties (chỉ dành cho các hoạt động triển khai tại cơ sở), thì các kết nối mục tiêu sẽ được đặt để sử dụng proxy đã chỉ định. |
use.proxy.tunneling |
true |
Nếu bạn đặt giá trị này thành true và chỉ định cấu hình proxy trong http.properties (chỉ dành cho các hoạt động triển khai tại cơ sở), thì các kết nối mục tiêu sẽ được đặt để sử dụng đường hầm đã chỉ định. Nếu đích đến sử dụng TLS/SSL, thì thuộc tính này sẽ bị bỏ qua và thông báo luôn được gửi qua một đường hầm. |
enable.method.override |
false |
Đối với phương thức HTTP đã chỉ định, hãy đặt tiêu đề X-HTTP-Method-Override cho yêu cầu gửi đi đến dịch vụ đích. Ví dụ: <Property
name="GET.override.method">POST</Property> |
*.override.method |
Không áp dụng | Đối với phương thức HTTP đã chỉ định, hãy đặt tiêu đề X-HTTP-Method-Override cho yêu cầu gửi đi. Ví dụ: <Property
name="GET.override.method">POST</Property> |
request.streaming.enabled |
false |
Theo mặc định ( |
response.streaming.enabled |
false |
Theo mặc định ( |
success.codes |
Không áp dụng |
Theo mặc định, Apigee Edge coi mã HTTP Việc đặt thuộc tính này sẽ ghi đè các giá trị mặc định. Do đó, nếu bạn muốn thêm mã HTTP <Property name="success.codes">1XX,2XX,3XX,400</Property> Nếu bạn chỉ muốn mã HTTP <Property name="success.codes">400</Property> Bằng cách đặt mã HTTP |
compression.algorithm |
Không áp dụng |
Theo mặc định, Apigee Edge chuyển tiếp các yêu cầu đến đích bằng cách sử dụng cùng một loại nén như yêu cầu của máy khách. Nếu yêu cầu nhận được từ ứng dụng khách đang sử dụng, chẳng hạn như nén gzip, thì Apigee Edge sẽ chuyển tiếp yêu cầu đến đích bằng cách sử dụng phương thức nén gzip. Nếu phản hồi nhận được từ đích đến sử dụng deflate, thì Apigee Edge sẽ chuyển tiếp phản hồi đó đến máy khách bằng cách sử dụng deflate. Sau đây là các giá trị được hỗ trợ:
Xem thêm: Apigee có hỗ trợ nén/giải nén bằng phương thức nén GZIP/deflate không? |
request.retain.headers. |
true |
Theo mặc định, Apigee Edge luôn giữ lại tất cả tiêu đề HTTP trên các thông báo gửi đi. Khi được đặt thành true, tất cả tiêu đề HTTP có trong yêu cầu đến sẽ được đặt trong yêu cầu đi. |
request.retain.headers |
Không áp dụng | Xác định các tiêu đề HTTP cụ thể trong yêu cầu cần được đặt trên yêu cầu gửi đi đến dịch vụ đích. Ví dụ: để truyền qua tiêu đề User-Agent, hãy đặt giá trị của request.retain.headers thành User-Agent.
Bạn có thể chỉ định nhiều tiêu đề HTTP dưới dạng danh sách được phân tách bằng dấu phẩy, ví dụ: User-Agent,Referer,Accept-Language. Thuộc tính này ghi đè request.retain.headers.enabled. Nếu bạn đặt request.retain.headers.enabled thành false, mọi tiêu đề được chỉ định trong thuộc tính request.retain.headers vẫn được đặt trên thông báo gửi đi. |
response.retain.headers. |
true |
Theo mặc định, Apigee Edge luôn giữ lại tất cả tiêu đề HTTP trên các thông báo gửi đi. Khi được đặt thành true, tất cả tiêu đề HTTP có trong phản hồi đến từ dịch vụ đích sẽ được đặt trên phản hồi đi trước khi được truyền đến ProxyEndpoint. |
response.retain.headers |
Không áp dụng | Xác định các tiêu đề HTTP cụ thể trong phản hồi cần được đặt trên phản hồi gửi đi trước khi được truyền đến ProxyEndpoint. Ví dụ: để truyền qua tiêu đề Expires, hãy đặt giá trị của response.retain.headers thành Expires. Bạn có thể chỉ định nhiều tiêu đề HTTP dưới dạng danh sách được phân tách bằng dấu phẩy, ví dụ: Expires,Set-Cookie. Thuộc tính này ghi đè response.retain.headers.enabled. Nếu response.retain.headers.enabled được đặt thành false, mọi tiêu đề được chỉ định trong thuộc tính response.retain.headers vẫn được đặt trên thông báo gửi đi. |
retain.queryparams. |
true |
Theo mặc định, Apigee Edge luôn giữ lại tất cả các tham số truy vấn trong các yêu cầu đi. Khi được đặt thành true, tất cả các tham số truy vấn có trong yêu cầu đến sẽ được đặt trên yêu cầu đi đến dịch vụ đích. |
retain.queryparams |
Không áp dụng | Xác định các tham số truy vấn cụ thể cần đặt cho yêu cầu đi. Ví dụ: để thêm tham số truy vấn apikey từ thông báo yêu cầu, hãy đặt retain.queryparams thành apikey. Nhiều tham số truy vấn được chỉ định dưới dạng một danh sách được phân tách bằng dấu phẩy, ví dụ: apikey,environment. Thuộc tính này ghi đè retain.queryparams.enabled. |
Thuộc tính truyền tải ProxyEndpoint
Các phần tử ProxyEndpoint HTTPTargetConnection xác định một tập hợp các thuộc tính truyền tải HTTP. Bạn có thể dùng các thuộc tính này để thiết lập cấu hình ở cấp độ truyền tải.
Các thuộc tính được đặt trên các phần tử ProxyEndpoint HTTPProxyConnection như sau:
<ProxyEndpoint name="default">
<HTTPProxyConnection>
<BasePath>/v1/weather</BasePath>
<Properties>
<Property name="request.streaming.enabled">true</Property>
</Properties>
<VirtualHost>default</VirtualHost>
<VirtualHost>secure</VirtualHost>
</HTTPProxyConnection>
</ProxyEndpoint>Để biết thêm thông tin về máy chủ ảo, hãy xem bài viết Giới thiệu về máy chủ ảo.
Quy cách thuộc tính truyền tải ProxyEndpoint
| Tên thuộc tính | Giá trị mặc định | Mô tả |
|---|---|---|
X-Forwarded-For |
false |
Khi được đặt thành true, địa chỉ IP của máy chủ ảo sẽ được thêm vào yêu cầu gửi đi dưới dạng giá trị của tiêu đề HTTP X-Forwarded-For. |
request.streaming. |
false |
Theo mặc định (false), tải trọng của yêu cầu HTTP sẽ được đọc vào một vùng đệm và các chính sách có thể hoạt động trên tải trọng sẽ hoạt động như mong đợi. Trong trường hợp tải trọng lớn hơn dung lượng bộ nhớ đệm (10 MB), bạn có thể đặt thuộc tính này thành true. Khi true, trọng tải yêu cầu HTTP không được đọc vào vùng đệm; chúng được truyền trực tuyến nguyên trạng đến luồng yêu cầu TargetEndpoint. Trong trường hợp này, mọi chính sách hoạt động trên tải trọng trong luồng yêu cầu ProxyEndpoint đều bị bỏ qua. Xem thêm bài viết Yêu cầu và phản hồi truyền trực tuyến. |
response.streaming. |
false |
Theo mặc định (false), trọng tải phản hồi HTTP được đọc vào một vùng đệm và các chính sách có thể hoạt động trên trọng tải sẽ hoạt động như dự kiến. Trong trường hợp tải trọng lớn hơn dung lượng bộ nhớ đệm (10 MB), bạn có thể đặt thuộc tính này thành true. Khi true, trọng tải phản hồi HTTP không được đọc vào vùng đệm; chúng được truyền trực tuyến nguyên trạng đến ứng dụng. Trong trường hợp này, mọi chính sách hoạt động trên tải trọng trong luồng phản hồi ProxyEndpoint đều bị bỏ qua. Xem thêm bài viết Yêu cầu và phản hồi truyền trực tuyến. |
compression.algorithm |
Không áp dụng |
Theo mặc định, Apigee Edge sẽ tuân theo loại nén được đặt cho mọi thông báo nhận được. Ví dụ: khi một ứng dụng gửi một yêu cầu sử dụng phương thức nén gzip, Apigee Edge sẽ chuyển tiếp yêu cầu đó đến đích bằng phương thức nén gzip. Bạn có thể định cấu hình các thuật toán nén để được áp dụng một cách rõ ràng bằng cách đặt thuộc tính này trên TargetEndpoint hoặc ProxyEndpoint. Sau đây là các giá trị được hỗ trợ:
Xem thêm: Apigee có hỗ trợ nén/giải nén bằng phương thức nén GZIP/deflate không? |
api.timeout |
Không áp dụng |
Định cấu hình thời gian chờ cho từng proxy API Bạn có thể định cấu hình các proxy API (ngay cả những proxy đã bật tính năng truyền phát trực tiếp) để hết thời gian chờ sau một khoảng thời gian cụ thể với trạng thái
Bạn không thể đặt thuộc tính này bằng một biến. Những khách hàng không thể sửa đổi thời gian chờ của Edge cũng có thể định cấu hình thời gian chờ của proxy API, miễn là thời gian chờ ngắn hơn thời gian chờ tiêu chuẩn của trình xử lý thông báo Edge là 57 giây. Hãy xem phần Đặt io.timeout.millis và api.timeout cho Edge để biết thêm. |
Đặt io.timeout.millis và api.timeout cho Edge
Trên Edge, hoạt động của io.timeout.millis và api.timeout có liên quan với nhau.
Trên mọi yêu cầu đối với một proxy API:
- Bộ định tuyến gửi giá trị thời gian chờ của nó đến Trình xử lý thông báo. Giá trị thời gian chờ của Bộ định tuyến là giá trị của
proxy_read_timeoutdo máy chủ ảo đặt để xử lý yêu cầu hoặc giá trị thời gian chờ mặc định là 57 giây. - Sau đó, Message Processor sẽ đặt
api.timeout:- Nếu
api.timeoutkhông được đặt ở cấp proxy, hãy đặt thành thời gian chờ của Bộ định tuyến. - Nếu
api.timeoutđược đặt ở cấp proxy, hãy đặt giá trị này trên Message Processor thành giá trị nhỏ hơn giữa thời gian chờ của Bộ định tuyến hoặc giá trị củaapi.timeout.
- Nếu
Giá trị của
api.timeoutchỉ định khoảng thời gian tối đa mà một proxy API phải thực thi từ yêu cầu API đến phản hồi.Sau khi mỗi chính sách trong proxy API thực thi hoặc trước khi Trình xử lý thông báo gửi yêu cầu đến điểm cuối đích, Trình xử lý thông báo sẽ tính toán (
api.timeout– thời gian đã trôi qua kể từ khi bắt đầu yêu cầu). Nếu giá trị nhỏ hơn 0, thì thời gian tối đa để xử lý yêu cầu đã hết và Message Processor sẽ trả về504.Giá trị của
io.timeout.millischỉ định khoảng thời gian tối đa mà điểm cuối mục tiêu phải phản hồi.Trước khi kết nối với một điểm cuối đích, Trình xử lý thông báo sẽ xác định giá trị nhỏ hơn giữa (
api.timeout– thời gian đã trôi qua kể từ khi bắt đầu yêu cầu) vàio.timeout.millis. Sau đó, nó đặtio.timeout.millisthành giá trị đó.- Nếu xảy ra thời gian chờ trong khi ghi yêu cầu HTTP,
408, Request Timeoutsẽ được trả về. - Nếu hết thời gian chờ trong khi đọc phản hồi HTTP,
504, Gateway Timeoutsẽ được trả về.
- Nếu xảy ra thời gian chờ trong khi ghi yêu cầu HTTP,
Giới thiệu về ScriptTarget cho các ứng dụng Node.js
Phần tử ScriptTarget được dùng để tích hợp một ứng dụng Node.js vào proxy của bạn. Để biết thông tin về cách sử dụng Node.js và ScriptTarget, hãy xem:
Giới thiệu về các điểm cuối HostedTarget
Thẻ <HostedTarget/> trống cho Edge biết rằng mục tiêu của thẻ là một ứng dụng Node.js được triển khai cho môi trường Hosted Targets. Để biết thông tin chi tiết, hãy xem bài viết Tổng quan về mục tiêu được lưu trữ.