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ể đặt trong TargetEndpoint và ProxyEndpoint để kiểm soát hành vi nhắn tin và kết nối. Để xem toàn bộ phạm vi của TargetEndpoint và cấu hình 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 HTTP thuộc tính truyền tải. 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 phương tiện giao thông.

Các thuộc tính được đặt trên các phần tử TargetEndpoint HTTPTargetConnection như hiển thị 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>

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

Tên thuộc tính Giá trị mặc định Mô tả
keepalive.timeout.millis 60000 Thời gian chờ ở trạng thái không hoạt động của kết nối đối với kết nối đích 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ẽ đã đóng.
connect.timeout.millis

3000

Hết thời gian chờ kết nối mục tiêu. Edge trả về mã trạng thái HTTP 503 nếu có kết nối hết thời gian chờ. Trong một số trường hợp, mã trạng thái HTTP 504 có thể được trả về khi LoadBalancer được dùng trong định nghĩa TargetServer và hết thời gian chờ.

io.timeout.millis 55000

Nếu không có dữ liệu để đọc trong số mili giây được chỉ định hoặc nếu ổ cắm chưa sẵn sàng ghi dữ liệu trong số mili giây được 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, 408, Request Timeout bị trả về.
  • Nếu hết thời gian chờ trong khi đọc phản hồi HTTP, 504, Gateway Timeout bị 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 để giao tiếp với Trình xử lý thư. Xem Định cấu hình thời gian chờ của Bộ định tuyến để khác.

Xem phần Cài đặt io.timeout.millis và api.timeout cho Edge để tìm hiểu thêm.

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

Theo mặc định (false), các phần tải dữ liệu 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 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 cho true. Khi true, các tải trọng yêu cầu HTTP sẽ không được đọc vào vùng đệm; chúng truyền trực tuyến nguyên trạng đến điểm cuối mục tiêu. 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 TargetEndpoint sẽ 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.enabled false

Theo mặc định (false), tải trọng phản hồi HTTP được đọc vào vùng đệm và các chính sách có thể hoạt động trên tải trọ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 cho true. Khi true, tải trọng phản hồi HTTP sẽ không được đọc vào vùng đệm; chúng truyền trực tuyến nguyên trạng đến quy trình 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 luồng phản hồi TargetEndpoint sẽ bị bỏ qua. Xem thêm Yêu cầu phát trực tuyến và .

success.codes Không áp dụng

Theo mặc định, Apigee Edge coi mã HTTP 4XX hoặc 5XX là lỗi và 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 mã thành công, cho 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 trong danh sách mã thành công mặc định, hãy đặt thuộc tính này thành:

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

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

&lt;Property name="Success.codes">400</Property>

Bằng cách đặt mã HTTP 400 làm mã thành công duy nhất, các mã 1XX, 2XX3XX được được coi là lỗi.

compression.algorithm Không áp dụng Theo mặc định, Apigee Edge 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 làm yêu cầu của máy khách. Nếu yêu cầu được nhận từ máy khách bằng cách sử dụng, ví dụ: gzip nén, sau đó Apigee Edge sẽ chuyển tiếp yêu cầu nhắm mục tiêu bằng hàm nén gzip. Nếu thông tin phản hồi nhận được từ mục tiêu sử dụng tính năng khử tiếng ồn, sau đó Apigee Edge chuyển tiếp phản hồi đến khách hàng sử dụng tính năng khử. Sau đây là các giá trị được hỗ trợ:
  • gzip: luôn gửi thư bằng định dạng nén gzip
  • deflate: luôn gửi thư bằng tính năng nén deflate
  • none: luôn gửi thư mà không nén

Xem thêm: Apigee có hỗ trợ tính năng nén/giải 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ả tiêu đề HTTP trên các thư gửi đi. Khi đặt vào true, tất cả tiêu đề HTTP có trong yêu cầu đến sẽ được đặt trên yêu cầu ra ngoà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 đặt trên hộp thư đi đến dịch vụ đích. Ví dụ: để chuyển qua 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 đượ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 request.retain.headers.enabled sẽ được đặt thành false, bất kỳ tiêu đề nào được chỉ định trong Thuộc tính request.retain.headers vẫn được đặt trong thư gửi đi.
response.retain.headers.
enabled
true Theo mặc định, Apigee Edge luôn giữ lại tất cả tiêu đề HTTP trên các thư gửi đi. Khi đặt vào true, tất cả tiêu đề HTTP có trên phản hồi đến từ mục tiêu đượ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 tiêu đề HTTP cụ thể từ phản hồi sẽ được đặt trên hộp thư đi trước khi được truyền đến ProxyEndpoint. Ví dụ: để chuyển qua Tiêu đề Expires, đặ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, đối với 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 đề đã chỉ định trong thuộc tính response.retain.headers vẫn được đặt trên thư đi.
retain.queryparams.
enabled
true Theo mặc định, Apigee Edge luôn giữ lại tất cả tham số truy vấn đối với các yêu cầu gửi đi. Thời gian được đặt thành true, tất cả tham số truy vấn có trong yêu cầu đến sẽ được đặt vào yêu cầu gửi đ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ể để đặt trong yêu cầu gửi đi. Ví dụ: để bao gồm tham số truy vấn apikey từ thông báo yêu cầu, đặt retain.queryparams thành apikey. Nhiều tham số truy vấn được chỉ định dưới dạng danh sách được phân tách bằng dấu phẩy, ví dụ: apikey,environment. Chiến dịch này thuộc tính sẽ ghi đè retain.queryparams.enabled.

Thuộc tính truyền tải ProxyEndpoint

Các phần tử HTTPTargetConnection của ProxyEndpoint xác định một tập hợp các thuộc tính truyền tải HTTP. Các có thể được sử dụng để 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 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 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 vào 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 tải trọng lớn hơn dung lượng bộ nhớ đệm (10 MB), bạn có thể đặt cho true. Khi true, các tải trọng yêu cầu HTTP sẽ không được đọc vào vùng đệm; chúng truyền y nguyên đến luồng yêu cầu TargetEndpoint. Trong trường hợp này, bất kỳ chính sách nào hoạt động trên tải trọng trong luồng yêu cầu ProxyEndpoint sẽ 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.
enabled
false Theo mặc định (false), tải trọng phản hồi HTTP được đọc vào vùng đệm và các chính sách có thể hoạt động trên tải trọ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 cho true. Khi true, tải trọng phản hồi HTTP sẽ không được đọc vào vùng đệm; chúng 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 Luồng phản hồi ProxyEndpoint sẽ 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ẽ áp dụng kiểu nén đã thiết lập cho mọi tin nhắn nhận được. Cho ví dụ: khách hàng gửi yêu cầu sử dụng nén gzip, Apigee Edge chuyển tiếp yêu cầu nhắm mục tiêu bằng phương thức nén gzip. Bạn có thể định cấu hình nén các thuật toán này sẽ đượ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 định dạng nén gzip
  • deflate: luôn gửi thư bằng tính năng nén deflate
  • none: luôn gửi thư mà không nén

Xem thêm: Apigee có hỗ trợ tính năng nén/giải 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 từng proxy API

Bạn có thể định cấu hình proxy API, ngay cả những proxy có phát trực tuyến, hết giờ sau một khoảng thời gian nhất định có 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 proxy cụ thể để hết thời gian chờ ở mốc 3 phút. Sau đây là cách bạn sẽ sử dụng api.timeout.

  1. Trước tiên, phải chắc chắn đị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 giờ sau 3 phút.
  2. Sau đó, hãy định cấu hình các proxy có liên quan để hết thời gian chờ sau 3 phút. Chỉ định giá trị trong 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ờ của hệ thống có thể dẫn đến các vấn đề về hiệu suất, vì tất cả các proxy không có chế độ cài đặt api.timeout đều sử dụng chế độ tải mới và tải cao hơn trình cân bằng, bộ định tuyến và trình xử lý thư. Vì vậy, hãy định cấu hình các proxy API khác không yêu cầu có thời gian chờ dài hơn để sử dụng thời gian chờ thấp hơn. Ví dụ: đoạn mã sau đây sẽ đặt một Proxy API sẽ 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 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.

Xem phần Cài đặt io.timeout.millis và api.timeout cho Edge để tìm hiểu thêm.

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

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

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

    Sau khi thực thi mỗi chính sách trong proxy API, hoặc trước khi Bộ xử lý thư gửi yêu cầu đến điểm cuối đích, Trình xử lý thông báo sẽ tính (api.timeout - thời gian đã trôi qua kể từ thời điểm bắt đầu yêu cầu). Nếu giá trị này nhỏ hơn 0 thì 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ư 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 tới điểm cuối mục tiêu, Bộ xử lý thông báo sẽ xác định ít hơn (api.timeout – thời gian đã trôi qua kể từ thời điểm bắt đầu yêu cầu) và io.timeout.millis. Sau đó, hàm này thiết lập io.timeout.millis thành giá trị đó.

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

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

Phần tử ScriptTarget dùng để tích hợp ứng dụng Node.js vào proxy của bạn. Cho 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 sử dụng làm mục tiêu cho một 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 Tổng quan về Mục tiêu được lưu trữ.