Tìm hiểu khả năng hỗ trợ của Edge cho các mô-đun Node.js

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

Phiên bản Node.js nào được hỗ trợ trên Bạn muốn dùng ứng dụng Apigee Edge?

Edge hiện hỗ trợ Node.js 0.10.32.

Những mô-đun Node.js chuẩn nào là có hỗ trợ trên Edge không?

Sử dụng bảng sau đây để xác định các mô-đun Node.js chuẩn là có trên Edge. Trong một số trường hợp, các mô-đun đi kèm chỉ được hỗ trợ một phần. Đây là các mô-đun được tích hợp sẵn trong Node.js.

Mô-đun Trạng thái Ghi chú
assert Có thể làm
buffer Có thể làm
child_process Bị hạn chế Hệ thống sẽ gửi một ngoại lệ nếu bạn cố gắng tạo một quy trình phụ. Tuy nhiên, "chĩa" được hỗ trợ để tạo chỉ số dưới.
cluster Đã tắt Phương thức string.isMaster luôn trả về true và các phương thức khác sẽ không được triển khai. Một bản sao của mỗi tập lệnh Node.js được triển khai cho từng trình xử lý thông báo của Edge.
crypto Có thể làm
dns Có thể làm
domain Có thể làm
dgram Bị hạn chế Các ứng dụng Node.js trong môi trường Apigee sẽ không thể truy cập vào các dịch vụ trên Internet thông qua UDP do kiến trúc mạng của chúng tôi.
events Có thể làm
fs Bị hạn chế Quyền truy cập hệ thống tệp bị hạn chế ở thư mục nơi tập lệnh được khởi chạy: Thư mục /resources/node. Tập lệnh Node.js có thể đọc và ghi tệp trong thư mục này, chẳng hạn như dưới dạng vết xước tạm thời, nhưng không có gì đảm bảo đối với khoảng thời gian các tệp sẽ tồn tại.
http Có thể làm Máy chủ ảo và đường dẫn cho các yêu cầu đến được chỉ định trong Proxy API chứ không phải bằng mô-đun HTTP. Xem phần "Tìm hiểu việc hỗ trợ cho http và https các mô-đun" để biết thêm thông tin.
https Có thể làm Tạo "https" máy chủ hoạt động giống hệt như "http" máy chủ. Xem bài viết "Tìm hiểu về việc hỗ trợ các mô-đun http và https" để biết thêm của bạn.
module Có thể làm
net Bị hạn chế Việc cố gắng theo dõi các kết nối TCP đến sẽ tạo ra một ngoại lệ.
path Có thể làm
module Có thể làm
process Hỗ trợ một phần Chức năng thao túng mã nhận dạng người dùng, thành viên nhóm và thư mục đang làm việc không được được hỗ trợ.
punycode Có thể làm
querystring Có thể làm
readline Đã tắt Không có dữ liệu đầu vào chuẩn cho các tập lệnh chạy trên Apigee Edge.
repl Đã tắt Không có dữ liệu đầu vào chuẩn cho các tập lệnh chạy trên Apigee Edge.
module Đã bao gồm
STDIO Có thể làm

Dữ liệu đầu ra và lỗi thông thường được chuyển đến tệp nhật ký trong Apigee Edge cơ sở hạ tầng. Bạn có thể xem các nhật ký này bằng cách nhấp vào Nhật ký Node.js trong và giao diện người dùng quản lý Apigee Edge cho proxy API của bạn.

Không có dữ liệu đầu vào chuẩn cho các tập lệnh chạy trên Apigee Edge. Tuy nhiên, bạn có thể chuyển đối số bằng phần tử ScriptTarget của TargetEndpoint. Xem Cấu hình ScriptTarget nâng cao để biết thêm thông tin.

stream Có thể làm
string_decoder Có thể làm
timers Đã bao gồm
tls Có thể làm Về cơ bản, các thông số Bảo mật tầng truyền tải (TLS) hoạt động giống như cách chúng hoạt động Node.js thông thường. Xem bài viết Sử dụng mô-đun Node.js TLS (SSL) trên Apigee Edge để biết thông tin chi tiết.
tty Đã tắt Không có dữ liệu đầu vào chuẩn cho các tập lệnh chạy trên Apigee Edge.
url Có thể làm
util Có thể làm
vm Có thể làm
zlib Có thể làm

Các mô-đun được hỗ trợ khác

Phần này liệt kê các mô-đun bổ sung không được hỗ trợ trong Node.js chuẩn, nhưng được do Trireme và Trireme hỗ trợ chạy trên Apigee Edge. Trireme là vùng chứa Node.js nguồn mở chạy trên Lợi ích của Apigee. Thư viện này được thiết kế để chạy các tập lệnh Node.js bên trong Máy ảo Java (JVM). Toàn bộ các mô-đun này có trên Trình quản lý cấu hình nội dung (ứng dụng web).

Mô-đun Mô tả
apigee-access Cho phép các ứng dụng Node.js chạy trên nền tảng Apigee Edge truy cập vào Chức năng dành riêng cho Apigee. Bạn có thể sử dụng mô-đun này để: truy cập và sửa đổi luồng biến, truy xuất dữ liệu từ kho lưu trữ bảo mật và sử dụng bộ nhớ đệm, hạn mức và OAuth của Edge luôn miễn phí. Hãy xem thêm phần Sử dụng mô-đun truy cập apigee.
trireme-support Cho phép các ứng dụng Node.js tận dụng các tính năng dành riêng cho Trireme. Hiện tại chỉ có một tính năng được hỗ trợ -- tải các mô-đun Node.js được tạo bằng Java. Lưu ý: tảiJar không được hỗ trợ trong Edge Cloud.
trireme-tmt Trình bày bản tóm tắt của quá trình xử lý XLST. Công cụ này được thiết kế đặc biệt cho Trireme nền tảng để cho phép xử lý XML hiệu quả khi ứng dụng Node.js được chạy trên Java.
trireme-jdbc Cấp quyền truy cập vào JDBC từ Node.js. Lưu ý: Không được hỗ trợ trong Edge Cloud. Dành cho Edge riêng tư Cloud, bạn có thể đặt các tệp JAR JDPC vào đường dẫn lớp và sử dụng mô-đun này.

Hỗ trợ các mô-đun Node.js thường dùng

Các quy định hạn chế đối với tập lệnh Node.js

Tuy nhiên, lưu ý rằng Edge áp dụng một số hạn chế nhất định đối với tập lệnh Node.js, chẳng hạn như sau:

  • Các ứng dụng Node.js trong môi trường Apigee Edge không thể truy cập vào các dịch vụ trên Internet qua UDP do kiến trúc mạng Edge.
  • Quyền truy cập hệ thống tệp bị hạn chế ở thư mục nơi tập lệnh Node.js được khởi chạy: /resources/node. Tập lệnh Node.js có thể đọc và ghi tệp trong thư mục này, đối với chẳng hạn như là một vết xước tạm thời, nhưng không có gì đảm bảo về việc tệp sẽ tồn tại lâu dài.
  • Việc cố gắng theo dõi các kết nối TCP đến sẽ tạo ra một trường hợp ngoại lệ.
  • Chức năng thao túng mã nhận dạng người dùng, thành viên nhóm và thư mục đang làm việc không được được hỗ trợ.
  • Đối với phương thức nhập chuẩn, bạn bị giới hạn trong việc truyền đối số bằng ScriptTarget của TargetEndpoint. Xem phần Nâng cao Cấu hình ScriptTarget để biết thêm thông tin.
  • Đối với đầu ra chuẩn, bạn chỉ được sử dụng nút Nhật ký Node.js trong Edge cho proxy của bạn. Bạn cũng có thể sử dụng "apigeetool getlogs" . Để biết thêm thông tin, hãy xem phần Triển khai một ứng dụng Node.js độc lập.
  • Các mô-đun phụ thuộc vào mã gốc không được hỗ trợ.
  • Các mô-đun phụ thuộc vào các tính năng EcmaScript 6, chẳng hạn như Promises (Lời hứa và Trình tạo) không được được hỗ trợ.
  • Cờ thời gian chạy của Node.js, chẳng hạn như " proxy hài hoà" không được hỗ trợ.

Đặt các hạn chế kết nối IP trên Edge cho Private Cloud

Edge dành cho Đám mây riêng tư có thể hạn chế mã Node.js truy cập vào các địa chỉ IP kể từ bằng “10.", "192.168" và localhost. Nếu bạn cố gắng truy cập vào các địa chỉ IP này, bạn sẽ thấy một lỗi trong biểu mẫu:

{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }

Bạn có thể sửa đổi những quy định hạn chế này bằng cách đặt thuộc tính conf_nodejs_connect.ranges.denied trong message-processors.properties cho từng Trình xử lý thư. Theo mặc định, thuộc tính này có giá trị:

  • Edge 4.17.05 trở về trước: conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
  • Edge 4.17.09 trở lên: conf_nodejs_connect.ranges.denied= (nghĩa là không có hạn chế)

Cách đặt tài sản này:

  1. Mở tệp message-processor.properties trong một trình chỉnh sửa. Nếu tệp chưa tồn tại, hãy tạo tệp:
    > vi /<inst_root>/apigee/customer/application/message-processor.properties
  2. Đặt thuộc tính như mong muốn. Ví dụ: để từ chối quyền truy cập chỉ vào máy chủ cục bộ:
    conf_nodejs_connect.ranges.denied=127.0.0.1/32
  3. Lưu các thay đổi.
  4. Đảm bảo rằng tệp thuộc tính thuộc sở hữu của "apigee" người dùng:
    &gt; chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties
  5. Khởi động lại Trình xử lý thư:
    &gt; /<inst_root>/apigee/apigee-service/bin/apigee-service cạnh-message-processor Khởi động lại

Tìm hiểu về việc hỗ trợ các mô-đun http và https

Tất cả ứng dụng Node.js chạy trong Apigee Edge phải sử dụng http hoặc Mô-đun https để theo dõi các yêu cầu được gửi đến. Nếu bạn định triển khai một tập lệnh không theo dõi các yêu cầu được gửi đến mà chỉ thực thi và thoát.

Phương thức listen của các mô-đun httphttps trong Node.js lấy số cổng làm thông số. Ví dụ:

svr.listen(process.env.PORT || 9000, function() {
   console.log('The server is running.');
});

"Cổng" này là bắt buộc trong Node.js, nhưng Apigee Edge lại bỏ qua tham số này. Thay vào đó, proxy API mà tập lệnh Node.js chạy trong đó sẽ chỉ định "máy chủ ảo" âm thanh đó và ứng dụng Node.js cũng sử dụng chính các máy chủ ảo đó, giống như mọi ứng dụng Apigee Edge khác proxy.

Mỗi môi trường trong Apigee đều có ít nhất một máy chủ ảo. Máy chủ ảo xác định HTTP chế độ cài đặt để kết nối với tổ chức Apigee. Tất cả proxy API trong một môi trường đều chia sẻ cùng một máy chủ ảo. Theo mặc định, mỗi môi trường có sẵn 2 máy chủ ảo: defaultsecure. Để biết thêm thông tin, hãy xem Nhận Máy chủ lưu trữ ảoAPI vòng đời phát triển.

Lệnh apigeetool deploynodeapp tạo một trình bao bọc proxy Apigee Edge xung quanh ứng dụng Node.js. Khi được triển khai, ứng dụng Node.js sẽ theo dõi theo mặc định máy chủ ảo được xác định cho môi trường. URL cho ứng dụng Node.js sẽ luôn là http://{org_name}-{env_name}.apigee.net.

Xử lý cuộc gọi đến yêu cầu

Giống như các ứng dụng Apigee Edge khác, nếu ứng dụng proxy được thiết lập để nghe trên secure thì máy chủ ảo sẽ chấp nhận các yêu cầu đến bằng HTTPS.

Xử lý cuộc gọi đi yêu cầu

Ngoài việc nhận lưu lượng truy cập đến, các ứng dụng Node.js bên trong Apigee Edge có thể sử dụng Các mô-đun httphttps để thực hiện các yêu cầu ra ngoài như bất kỳ Node.js nào khác . Các mô-đun này hoạt động giống như bên trong Node.js.

Tìm hiểu về việc hỗ trợ cho mô-đun tls

Apigee Edge hỗ trợ mô-đun Node.js tls. Mô-đun này sử dụng OpenSSL để cung cấp giao thức Bảo mật tầng truyền tải (TLS) và/hoặc Lớp cổng bảo mật (SSL) thông tin giao tiếp trong luồng được mã hóa. Bạn có thể sử dụng mô-đun tls để tạo chế độ bảo mật kết nối với các dịch vụ phụ trợ từ ứng dụng Node.js chạy trên Edge.

Để hiểu cách hoạt động của mô-đun tls trên Apigee Edge, bạn cần phải tìm hiểu cách dùng virtual hosts trên Apigee Edge. Mọi môi trường trong Apigee có ít nhất một máy chủ ảo. Máy chủ ảo xác định chế độ cài đặt HTTP để kết nối với Tổ chức Apigee. Tất cả proxy API trong một môi trường đều chia sẻ cùng máy chủ ảo. Theo mặc định, có hai máy chủ ảo cho mỗi môi trường: defaultsecure Để biết thêm thông tin về máy chủ ảo, hãy xem Nhận Máy chủ lưu trữ ảoAPI vòng đời phát triển.

Bây giờ, hãy cùng tìm hiểu cách Apigee Edge xử lý giao tiếp TLS (SSL) cho cuộc gọi đến và cuộc gọi đi các yêu cầu trên ứng dụng Node.js:

Xử lý cuộc gọi đến yêu cầu

Tuỳ thuộc vào cách định cấu hình máy chủ ảo cho tổ chức của bạn, Edge cung cấp các tính năng sau tùy chọn:

  • Nếu proxy API được định cấu hình để theo dõi trên máy chủ ảo default, thì proxy đó chấp nhận yêu cầu qua HTTP.
  • Nếu proxy API được định cấu hình để theo dõi trên máy chủ ảo secure, thì proxy đó chấp nhận yêu cầu qua HTTPS. URL sẽ nằm trong miền apigee.net và chứng chỉ SSL ký tự đại diện cho *.apigee.net sẽ được sử dụng. Miễn là ứng dụng tạo yêu cầu đến miền apigee.net, thì chứng chỉ SSL sẽ xác thực thông thường.

Xử lý cuộc gọi đi yêu cầu

Bạn có thể thực hiện các yêu cầu đi bằng mô-đun tls giống như cách bạn làm thường trong Node.js. Về cơ bản, bạn cần thêm khoá và chứng chỉ phía máy khách (.pem tệp) vào thư mục resources/node rồi tải các tệp đó bên trong tập lệnh. Để biết thông tin về cách sử dụng mô-đun tls và các phương thức của mô-đun đó, hãy xem Tài liệu về mô-đun Node.js tls.

Cấu hình ScriptTarget nâng cao

Trong <TargetEndpoint> định nghĩa, <ScriptTarget> sẽ mất thêm các tham số không bắt buộc ngoài <ResourceURL>. Bạn cũng có thể truyền đối số dòng lệnh và biến môi trường sang tập lệnh Node.js bằng cách sử dụng <EnvironmentVariables> và &lt;Arguments&gt; thông số:

<TargetEndpoint name="default">
  <ScriptTarget>
     <ResourceURL>node://hello.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> 
     </EnvironmentVariables>
     <Arguments>
         <Argument>ARG</Argument>
     </Arguments>
  </ScriptTarget>
</TargetEndpoint>