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
Apigee Edge hỗ trợ phiên bản Node.js nào?
Edge hiện hỗ trợ Node.js 0.10.32.
Edge hỗ trợ những mô-đun Node.js tiêu chuẩn nào?
Hãy sử dụng bảng sau để xác định những mô-đun Node.js tiêu chuẩn được đưa vào 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 hỗ trợ | |
buffer |
Được hỗ trợ | |
child_process |
Bị hạn chế | Một ngoại lệ sẽ được gửi nếu có nỗ lực tạo một quy trình con. Tuy nhiên, "fork" được hỗ trợ để tạo các tập lệnh con. |
cluster |
Đã tắt | Phương thức cluster.isMaster luôn trả về giá trị true và các phương thức khác 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 mỗi trình xử lý thông báo Edge. |
crypto |
Được hỗ trợ | |
dns |
Được hỗ trợ | |
domain |
Được hỗ trợ | |
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 hỗ trợ | |
fs |
Bị hạn chế | Quyền truy cập vào hệ thống tệp bị hạn chế đối với thư mục nơi tập lệnh được khởi chạy: thư mục /resources/node. Các tập lệnh Node.js có thể đọc và ghi tệp trong thư mục này, chẳng hạn như một vùng tạm thời, nhưng không có gì đảm bảo về thời gian tồn tại của các tệp. |
http |
Được hỗ trợ | Máy chủ ảo và đường dẫn cho các yêu cầu đến được chỉ định trong API Proxy, chứ không phải do mô-đun HTTP. Hãy xem phần "Tìm hiểu về khả năng hỗ trợ cho các mô-đun http và https" để biết thêm thông tin. |
https |
Được hỗ trợ | Việc tạo một máy chủ "https" sẽ hoạt động giống hệt như một máy chủ "http". Hãy xem phần "Tìm hiểu về khả năng hỗ trợ cho các mô-đun http và https" để biết thêm thông tin. |
module |
Được hỗ trợ | |
net |
Bị hạn chế | Các lượt cố gắng nghe các kết nối TCP đến sẽ tạo ra một ngoại lệ. |
path |
Được hỗ trợ | |
module |
Được hỗ trợ | |
process |
Hỗ trợ một phần | Không hỗ trợ chức năng thao tác với mã nhận dạng người dùng, tư cách thành viên trong nhóm và thư mục làm việc. |
punycode |
Được hỗ trợ | |
querystring |
Được hỗ trợ | |
readline |
Đã tắt | Không có đầu vào tiêu chuẩn cho các tập lệnh chạy trên Apigee Edge. |
repl |
Đã tắt | Không có đầu vào tiêu chuẩn cho các tập lệnh chạy trên Apigee Edge. |
module |
Đã bao gồm | |
STDIO |
Được hỗ trợ |
Đầu ra và lỗi tiêu chuẩn được chuyển đến một tệp nhật ký trong cơ sở hạ tầng Apigee Edge. Bạn có thể xem các nhật ký này bằng cách nhấp vào nút Nhật ký Node.js trong giao diện người dùng quản lý Apigee Edge cho proxy API của bạn. Không có đầu vào tiêu chuẩn cho các tập lệnh chạy trên Apigee Edge. Tuy nhiên, bạn có thể truyền các đối số bằng cách sử dụng phần tử ScriptTarget của TargetEndpoint. Hãy xem phần Cấu hình ScriptTarget nâng cao để biết thêm thông tin. |
stream |
Được hỗ trợ | |
string_decoder |
Được hỗ trợ | |
timers |
Đã bao gồm | |
tls |
Được hỗ trợ | Các tham số Bảo mật tầng truyền tải (TLS) hoạt động theo cách tương tự như trong Node.js thông thường. Hãy xem bài viết Sử dụng mô-đun TLS (SSL) Node.js trên Apigee Edge để biết thông tin chi tiết. |
tty |
Đã tắt | Không có đầu vào tiêu chuẩn cho các tập lệnh chạy trên Apigee Edge. |
url |
Được hỗ trợ | |
util |
Được hỗ trợ | |
vm |
Được hỗ trợ | |
zlib |
Được hỗ trợ |
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 tiêu chuẩn, nhưng được Trireme và Trireme chạy trên Apigee Edge hỗ trợ. Trireme là vùng chứa Node.js nguồn mở chạy trên Apigee Edge. Nó được thiết kế để chạy các tập lệnh Node.js bên trong Máy ảo Java (JVM). Tất cả các mô-đun này đều có trên NPM.
| 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 các biến luồng, truy xuất dữ liệu từ kho lưu trữ an toàn và sử dụng các dịch vụ bộ nhớ đệm, hạn mức và OAuth của Edge. Xem thêm phần Sử dụng mô-đun apigee-access. |
| 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ợ là tải các mô-đun Node.js được tạo bằng Java. Lưu ý: loadJars không được hỗ trợ trong Edge Cloud. |
| trireme-xslt | Trình bày một lớp trừu tượng về quá trình xử lý XLST. Thư viện này được thiết kế riêng cho nền tảng Trireme để cho phép xử lý hiệu quả XSLT khi các ứng dụng Node.js chạy trên Java. |
| trireme-jdbc | Cung cấp quyền truy cập vào JDBC từ Node.js. Lưu ý: Không được hỗ trợ trong Edge Cloud. Đối với Edge Private Cloud, bạn có thể đặt tệp JDPC JAR 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, hãy lưu ý rằng Edge áp đặt một số hạn chế đối với các 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 thông qua UDP do kiến trúc mạng Edge.
- Quyền truy cập vào hệ thống tệp bị hạn chế đối với thư mục nơi tập lệnh Node.js được khởi chạy: thư mục /resources/node. Các tập lệnh Node.js có thể đọc và ghi tệp trong thư mục này, chẳng hạn như một vùng tạm thời, nhưng không có gì đảm bảo về thời gian tồn tại của các tệp.
- Các lượt cố gắng nghe các kết nối TCP đến sẽ tạo ra một ngoại lệ.
- Không hỗ trợ chức năng thao tác với mã nhận dạng người dùng, tư cách thành viên trong nhóm và thư mục làm việc.
- Đối với đầu vào tiêu chuẩn, bạn chỉ có thể truyền các đối số bằng cách sử dụng phần tử ScriptTarget của TargetEndpoint. Hãy xem phần Cấu hình ScriptTarget nâng cao để biết thêm thông tin.
- Đối với đầu ra chuẩn, bạn chỉ có thể sử dụng nút Nhật ký Node.js trong giao diện người dùng quản lý Edge cho proxy của mình. Bạn cũng có thể dùng lệnh "apigeetool getlogs". Để biết thêm thông tin, hãy xem bài viết Triển khai một ứng dụng Node.js độc lập.
- Không hỗ trợ các mô-đun phụ thuộc vào mã gốc.
- Các mô-đun phụ thuộc vào các tính năng EcmaScript 6, chẳng hạn như Lời hứa và Trình tạo, không được hỗ trợ.
- Các cờ thời gian chạy Node.js như "harmony-proxies" không được hỗ trợ.
Đặt quy định hạn chế về kết nối IP trên Edge cho Private Cloud
Edge for Private Cloud có thể hạn chế mã Node.js truy cập vào địa chỉ IP bắt đầu bằng "10.", "192.168" và localhost. Nếu cố gắng truy cập vào các địa chỉ IP này, bạn sẽ thấy một lỗi có dạng:
{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }
Bạn có thể sửa đổi các hạn chế này bằng cách đặt thuộc tính conf_nodejs_connect.ranges.denied trong tệp message-processors.properties cho mỗi Trình xử lý thông báo. Theo mặc định, thuộc tính này có giá trị:
- Edge 4.17.05 trở xuống: 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 thuộc tính này:
- Mở tệp message-processor.properties trong một trình chỉnh sửa. Nếu tệp này không tồn tại, hãy tạo tệp:
> vi /<inst_root>/apigee/customer/application/message-processor.properties - Đặt thuộc tính theo ý muốn. Ví dụ: để từ chối quyền truy cập vào chỉ máy chủ cục bộ:
conf_nodejs_connect.ranges.denied=127.0.0.1/32 - Lưu thay đổi.
- Đảm bảo tệp thuộc tính thuộc về người dùng "apigee":
> chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties - Khởi động lại Trình xử lý thông báo:
> /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Tìm hiểu về khả năng hỗ trợ cho các mô-đun http và https
Tất cả các ứng dụng Node.js chạy trong Apigee Edge đều phải sử dụng mô-đun http hoặc https để theo dõi các yêu cầu đến. Nếu bạn triển khai một tập lệnh không theo dõi các yêu cầu đến, thì tập lệnh đó sẽ chỉ thực thi và thoát.
Phương thức listen của các mô-đun http và https trong Node.js lấy số cổng làm tham số. Ví dụ:
svr.listen(process.env.PORT || 9000, function() { console.log('The server is running.'); });
Đối số "port" là bắt buộc trong Node.js, nhưng Apigee Edge bỏ qua tham số này. Thay vào đó, proxy API mà tập lệnh Node.js chạy sẽ chỉ định "máy chủ ảo" mà proxy đó theo dõi và ứng dụng Node.js sẽ sử dụng chính những máy chủ ảo đó, giống như mọi proxy Apigee Edge khác.
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 các chế độ cài đặt HTTP để kết nối với tổ chức Apigee. Tất cả các proxy API trong một môi trường đều dùng chung cùng một máy chủ ảo. Theo mặc định, mỗi môi trường sẽ có 2 máy chủ ảo: default và secure. Để biết thêm thông tin, hãy xem phần
Nhận máy chủ ảo và vòng đời phát triển API.
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 trên máy chủ ảo mặc định được xác định cho môi trường. URL của ứng dụng Node.js sẽ luôn là http://{org_name}-{env_name}.apigee.net.
Xử lý các yêu cầu đến
Giống như các ứng dụng Apigee Edge khác, nếu ứng dụng proxy được thiết lập để theo dõi trên máy chủ ảo secure, thì ứng dụng đó sẽ chấp nhận các yêu cầu đến bằng HTTPS.
Xử lý các yêu cầu đi
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ể dùng các mô-đun http và https để thực hiện các yêu cầu đi như mọi ứng dụng Node.js khác. Các mô-đun này hoạt động như bình thường trong Node.js.
Tìm hiểu về việc hỗ trợ mô-đun tls
Apigee Edge hỗ trợ mô-đun tls Node.js.
Mô-đun này sử dụng OpenSSL để cung cấp giao tiếp luồng được mã hoá bằng 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). Bạn có thể dùng mô-đun tls để tạo các kết nối an toàn đến các dịch vụ phụ trợ từ các ứng dụng Node.js đang 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 hiểu cách virtual hosts được dùng trên Apigee Edge. 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 các chế độ cài đặt HTTP để kết nối với tổ chức Apigee. Tất cả các proxy API trong một môi trường đều dùng chung máy chủ ảo. Theo mặc định, mỗi môi trường sẽ có 2 máy chủ ảo: default và secure. Để biết thêm thông tin về máy chủ ảo, hãy xem phần
Lấy máy chủ ảo và vòng đời phát triển API.
Bây giờ, hãy xem cách Apigee Edge xử lý giao tiếp TLS (SSL) cho các yêu cầu đến và đi trên các ứng dụng Node.js:
Xử lý các yêu cầu đến
Tuỳ thuộc vào cách máy chủ ảo được định cấu hình cho tổ chức của bạn, Edge cung cấp các lựa chọn sau:
- Nếu được định cấu hình để theo dõi trên máy chủ ảo
default, thì proxy API sẽ chấp nhận các yêu cầu qua HTTP. - Nếu được định cấu hình để theo dõi trên máy chủ ảo
secure, thì proxy API sẽ chấp nhận các yêu cầu qua HTTPS. URL sẽ nằm trong miềnapigee.netvà chứng chỉ SSL ký tự đại diện cho*.apigee.netsẽ được sử dụng. Miễn là các ứng dụng đưa ra yêu cầu đến miềnapigee.net, thì chứng chỉ SSL sẽ xác thực bình thường.
Xử lý các yêu cầu đi
Bạn có thể đưa ra các yêu cầu đi bằng mô-đun tls theo cách mà bạn thường làm trong Node.js. Về cơ bản, bạn cần thêm khoá và chứng chỉ phía máy khách (tệp .pem) vào thư mục resources/node và tải chúng vào 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 này, hãy xem tài liệu về mô-đun tls của Node.js.
Cấu hình ScriptTarget nâng cao
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>