Tài liệu tham khảo về thuộc tính điểm cuối

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

Chủ đề này mô tả các thuộc tính truyền tải có thể được thiết lập trong các cấu hình TargetEndpoint và ProxyEndpoint để kiểm soát hoạt động nhắn tin và kết nối. Để biết toàn bộ thông tin về cấu hình TargetEndpoint và ProxyEndpoint, hãy xem tài liệu tham khảo về cấu hình proxy API.

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 để đặt cấu hình cấp độ phương tiện vận chuyển.

Thuộc tính được đặt trên các phần tử TargetEndpoint HTTPTargetConnection như sau:

<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>

Thông số kỹ thuật của thuộc tính truyền tải TargetEndpoint

Tên thuộc tính Giá trị mặc định Nội dung mô tả
keepalive.timeout.millis 60000 Thời gian chờ ở trạng thái rảnh của kết nối đối với kết nối mục tiêu trong nhóm kết nối. Nếu kết nối trong nhóm không hoạt động vượt quá giới hạn đã chỉ định, thì kết nối sẽ bị đóng.
connect.timeout.millis

3000

Thời gian chờ của kết nối mục tiêu. Edge sẽ trả về một mã trạng thái HTTP 503 nếu hết thời gian chờ kết nối.

io.timeout.millis 55000

Nếu không có dữ liệu để đọc cho số mili giây đã chỉ định hoặc nếu ổ cắm chưa sẵn sàng ghi dữ liệu cho số mili giây đã chỉ định, thì giao dịch sẽ được coi là hết thời gian chờ.

  • Nếu hết thời gian chờ trong khi ghi yêu cầu HTTP, thì 408, Request Timeout sẽ được trả về.
  • Nếu hết thời gian chờ trong khi đọc phản hồi HTTP, thì 504, Gateway Timeout sẽ được trả về.

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 sử dụng để giao tiếp với Bộ xử lý thông báo. Hãy xem bài viết Định cấu hình thời gian chờ của bộ định tuyến để tìm hiểu thêm.

Hãy xem bài viết Cài đặt io.timeout.millis và api.timeout cho Edge để biết thêm thông tin.

supports.http10 true Nếu đây là true và ứng dụng gửi yêu cầu 1.0, thì mục tiêu cũng sẽ được gửi yêu cầu 1.0. Nếu không, yêu cầu 1.1 sẽ được gửi để nhắm 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ì mục tiêu cũng sẽ được gửi yêu cầu 1.1, nếu không yêu cầu 1.0 sẽ được gửi đến mục tiêu.
use.proxy true Nếu bạn đặt thành true và cấu hình proxy được chỉ định trong http.properties (chỉ triển khai tại chỗ), thì các kết nối mục tiêu sẽ được thiết lập để sử dụng proxy đã chỉ định.
use.proxy.tunneling true Nếu bạn đặt thuộc tính này thành true và cấu hình proxy được chỉ định trong http.properties (chỉ các hoạt động triển khai tại cơ sở), thì kết nối mục tiêu sẽ được thiết lập để sử dụng đường hầm được chỉ định. Nếu mục tiêu sử dụng TLS/SSL, thuộc tính này sẽ bị bỏ qua và thông báo luôn được gửi qua đườ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 trên yêu cầu gửi đi đến dịch vụ mục tiêu. Ví dụ: <Property name="GET.override.method">POST</Property>
*.override.method Không áp dụng Đối với phương thức HTTP được chỉ định, hãy đặt tiêu đề X-HTTP-Method-Override trên yêu cầu gửi đi. Ví dụ: <Property name="GET.override.method">POST</Property>
request.streaming.enabled false

Theo mặc định (false), tải trọng yêu cầu HTTP được đọc trong vùng đệm và các chính sách có thể hoạt động trên tải trọng dữ liệu hoạt động như dự kiến. Trong trường hợp các 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, các tải trọng 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 điểm cuối đích. Trong trường hợp này, mọi chính sách hoạt động trên tải trọng trong quy trình yêu cầu TargetEndpoint đều sẽ bị bỏ qua. Xem thêm về Yêu cầu truyền trực tuyến và phản hồi.

response.streaming.enabled false

Theo mặc định (false), các tải trọng phản hồi HTTP được đọc trong vùng đệm và các chính sách có thể hoạt động trên tải trọng dữ liệu hoạt động như dự kiến. Trong trường hợp các 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, các tải trọng 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 luồng phản hồi ProxyEndpoint. Trong trường hợp này, mọi chính sách hoạt động trên tải trọng trong quy trình phản hồi TargetEndpoint đều sẽ bị bỏ qua. Xem thêm về Yêu cầu truyền trực tuyến và phản hồi.

success.codes Không áp dụng

Theo mặc định, Apigee Edge sẽ coi mã HTTP 4XX hoặc 5XX là lỗi và sẽ coi mã HTTP 1XX, 2XX, 3XX là thành công. Thuộc tính này cho phép định nghĩa rõ ràng các mã thành công, ví dụ: 2XX, 1XX, 505 sẽ coi mọi mã phản hồi HTTP 100, 200505 là thành công.

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 400 vào danh sách mã thành công mặc định, hãy đặt thuộc tính này là:

<Property name="Success.codes">1XX,2XX,3XX,400</Property>

Nếu bạn chỉ muốn coi mã HTTP 400 là mã thành công, hãy đặt thuộc tính là:

<Property name="Success.codes">400</Property>

Khi bạn đặt mã HTTP 400 làm mã thành công duy nhất, các mã 1XX, 2XX3XX sẽ được coi là lỗi.

compression.algorithm Không áp dụng Theo mặc định, Apigee Edge sẽ chuyển tiếp các yêu cầu đến mục tiêu bằng cùng một loại nén với yêu cầu của khách hàng. Nếu ứng dụng nhận được yêu cầu bằng cách sử dụng tệp nén gzip, thì Apigee Edge sẽ chuyển tiếp yêu cầu tới nơi bằng cách nén gzip. Nếu phản hồi nhận được từ mục tiêu sử dụng deflate, thì Apigee Edge sẽ chuyển tiếp phản hồi tới ứng dụng bằng cách sử dụng deflate. Sau đây là các giá trị được hỗ trợ:
  • gzip: luôn gửi thư bằng cách nén gzip
  • deflate: luôn gửi thư bằng tính năng nén deflate
  • none (không): luôn gửi thư mà không cần nén

Xem thêm: Apigee có hỗ trợ tính năng nén/loại bỏ nén bằng tính năng nén GZIP/deflate không?

request.retain.headers.
enabled
true Theo mặc định, Apigee Edge luôn giữ lại tất cả các tiêu đề HTTP đối với các thư được gửi đi. Khi bạn đặt thành true, tất cả tiêu đề HTTP có trong yêu cầu đến sẽ được đặt theo yêu cầu gửi đ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 trong yêu cầu gửi đi đến dịch vụ mục tiêu. Ví dụ: để truyền qua tiêu đề User-Agent, hãy đặt giá trị của request.retain.headers thành User-Agent. Nhiều tiêu đề HTTP được chỉ định dưới dạng một danh sách 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, thì mọi tiêu đề được chỉ định trong thuộc tính request.retain.headers vẫn sẽ được đặt trên thư gửi đi.
response.retain.headers.
enabled
true Theo mặc định, Apigee Edge luôn giữ lại tất cả các tiêu đề HTTP đối với các thư được 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ụ mục tiêu sẽ được đặt trong 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 trong phản hồ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. Nhiều tiêu đề HTTP đượ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ụ: Expires,Set-Cookie. Thuộc tính này ghi đè response.retain.headers.enabled. Nếu bạn đặt response.retain.headers.enabled thành false, thì mọi tiêu đề được chỉ định trong thuộc tính response.retain.headers vẫn sẽ được đặt trên thư gửi đi.
retain.queryparams.
enabled
true Theo mặc định, Apigee Edge luôn giữ lại mọi tham số truy vấn trong các yêu cầu gửi đi. Khi được đặt thành true, tất cả tham số truy vấn có trong yêu cầu đến sẽ được đặt trong yêu cầu gửi đến dịch vụ mục tiêu.
retain.queryparams Không áp dụng Xác định các tham số truy vấn cụ thể để đặt trong yêu cầu đi. Ví dụ: để đưa tham số truy vấn apikey vào thông điệp 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 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 phương tiện vận chuyển.

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 phần Giới thiệu về máy chủ ảo.

Thuộc tính truyền tải ProxyEndpoint Thông số kỹ thuật

Tên thuộc tính Giá trị mặc định Nội dung mô tả
X-Forwarded-For false Khi bạn đặ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.
enabled
false Theo mặc định (false), tải trọng yêu cầu HTTP được đọc trong vùng đệm và các chính sách có thể hoạt động trên tải trọng hoạt động như dự kiến. Trong trường hợp các 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, các tải trọng 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 quy trình yêu cầu ProxyEndpoint đều bị bỏ qua. Xem thêm về Yêu cầu truyền trực tuyến và phản hồi.
response.streaming.
enabled
false Theo mặc định (false), các tải trọng phản hồi HTTP được đọc trong vùng đệm và các chính sách có thể hoạt động trên tải trọng dữ liệu hoạt động như dự kiến. Trong trường hợp các 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, các tải trọng 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 máy khách. Trong trường hợp này, mọi chính sách hoạt động trên tải trọng trong quy trình phản hồi ProxyEndpoint đều sẽ bị bỏ qua. Xem thêm về Yêu cầu truyền trực tuyến và phản hồi.
compression.algorithm Không áp dụng

Theo mặc định, Apigee Edge dựa trên loại nén được đặt cho mọi thông báo nhận được. Ví dụ: Khi khách hàng gửi một yêu cầu sử dụng chức năng nén gzip, Apigee Edge sẽ chuyển tiếp yêu cầu đó tới khách hàng bằng cách nén gzip. Bạn có thể định cấu hình thuật toán nén để được áp dụng 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ợ:

  • gzip: luôn gửi thư bằng cách nén gzip
  • deflate: luôn gửi thư bằng tính năng nén deflate
  • none (không): luôn gửi thư mà không cần nén

Xem thêm: Apigee có hỗ trợ tính năng nén/loại bỏ nén bằng tính năng nén GZIP/deflate không?

api.timeout Không áp dụng

Định cấu hình thời gian chờ cho các proxy API riêng lẻ

Bạn có thể định cấu hình các proxy API, ngay cả những proxy đã bật tính năng phát trực tuyến, để hết thời gian chờ sau một thời gian chỉ định với trạng thái 504 Gateway Timeout. Trường hợp sử dụng chính là dành cho những khách hàng có proxy API mất nhiều thời gian thực thi hơn. Ví dụ: giả sử bạn cần các proxy cụ thể để hết thời gian chờ là 3 phút. Sau đây là cách bạn sử dụng api.timeout.

  1. Trước tiên, hãy nhớ định cấu hình trình cân bằng tải, bộ định tuyến và trình xử lý thông báo để hết thời gian chờ sau 3 phút.
  2. Sau đó, định cấu hình các proxy có liên quan để hết thời gian chờ 3 phút. Chỉ định giá trị bằng mili giây. Ví dụ: <Property name="api.timeout">180000</Property>
  3. Tuy nhiên, lưu ý rằng việc tăng thời gian chờ hệ thống có thể dẫn đến các vấn đề về hiệu suất vì mọi proxy không có chế độ cài đặt api.timeout đều sử dụng thời gian chờ mới của trình cân bằng tải, bộ định tuyến và trình xử lý thông báo mới có thời gian chờ cao hơn. Vì vậy, hãy định cấu hình các proxy API khác không yêu cầu thời gian chờ dài hơn để sử dụng thời gian chờ thấp hơn. Ví dụ: nội dung sau đây thiết lập proxy API để hết thời gian chờ sau 1 phút:
    <Property name="api.timeout">60000</Property>

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 bài viết Cài đặt io.timeout.millis và api.timeout cho Edge để biết thêm thông tin.

Đặt io.timeout.millis và api.timeout cho Edge

Trên Edge, hoạt động của io.timeout.millisapi.timeout có liên quan với nhau. Trong mọi yêu cầu gửi đến proxy API:

  1. Bộ định tuyến gửi giá trị hết thời gian chờ cho Bộ 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_timeout do máy chủ ảo thiết lập xử lý yêu cầu hoặc giá trị thời gian chờ mặc định là 57 giây.
  2. Sau đó, Trình xử lý tin nhắn sẽ thiết lập api.timeout:
    1. Nếu api.timeout không được đặt ở cấp proxy, hãy đặt thành thời gian chờ của Bộ định tuyến.
    2. Nếu api.timeout được đặt ở cấp proxy, hãy đặt giá trị này trên Bộ xử lý thông báo thành thời gian chờ của bộ định tuyến thấp hơn hoặc giá trị api.timeout.
  3. Giá trị của api.timeout chỉ định khoảng thời gian tối đa mà một proxy API phải thực thi từ lúc yêu cầu API đến khi phản hồi.

    Sau khi mỗi chính sách trong proxy API thực thi hoặc trước khi Bộ xử lý thông báo gửi yêu cầu đến điểm cuối mục tiêu, Bộ 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ị này nhỏ hơn 0, tức là khoảng thời gian tối đa để xử lý yêu cầu đã hết hạn và Trình xử lý thông báo sẽ trả về 504.

  4. Giá trị của io.timeout.millis chỉ đị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 mục tiêu, Trình xử lý thông báo sẽ xác định giá trị nhỏ hơn (api.timeout – thời gian đã trôi qua từ khi bắt đầu yêu cầu) và io.timeout.millis. Sau đó, phương thức này sẽ đặt io.timeout.millis thành giá trị đó.

    • Nếu hết thời gian chờ trong khi ghi yêu cầu HTTP, thì 408, Request Timeout sẽ được trả về.
    • Nếu hết thời gian chờ trong khi đọc phản hồi HTTP, thì 504, Gateway Timeout sẽ được trả về.

Giới thiệu về ScriptTarget cho ứng dụng Node.js

Phần tử ScriptTarget được dùng để tích hợp ứ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ề điểm cuối HostedTarget

Thẻ <HostedTarget/> trống yêu cầu Edge dùng làm mục tiêu cho một ứng dụng Node.js được triển khai cho môi trường Mục tiêu được lưu trữ. Để 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ữ.