<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
哪些版本的 Node.js 受支持 Apigee Edge 有哪些?
Edge 目前支持 Node.js 0.10.32。
哪些标准 Node.js 模块是 是否支持 Edge?
使用下表确定有哪些标准 Node.js 模块 包括在 Edge 中。在某些情况下,只支持部分包含的模块。这些是模块 Node.js 中内置的各种功能模块 | 状态 | 备注 |
---|---|---|
assert |
支持 | |
buffer |
支持 | |
child_process |
受限 | 如果尝试生成子进程,则会抛出异常。不过, “叉子”支持生成下标。 |
cluster |
已停用 | 方法 cluster.isMaster 始终返回 true,并且不会实现其他方法。 每个 Node.js 脚本的副本会部署到每个 Edge 消息处理器。 |
crypto |
支持 | |
dns |
支持 | |
domain |
支持 | |
dgram |
受限 | Apigee 环境中的 Node.js 应用将无法访问 这要归功于我们的网络架构。 |
events |
支持 | |
fs |
受限 | 文件系统访问权限仅限于启动脚本的目录:
/resources/node 目录中。Node.js 脚本可以
例如用作临时暂存区,但并不能保证
文件将保留多长时间 |
http |
支持 | 传入请求的虚拟主机和路径在 API 代理中指定,而不是 HTTP 模块。请参阅“了解对 http 和 https 的支持 模块”。 |
https |
支持 | 创建“https”服务器的行为方式与“http”服务器。请参阅“了解对 http 和 https 模块的支持”了解详情 信息。 |
module |
支持 | |
net |
受限 | 如果尝试监听传入的 TCP 连接,则会产生异常。 |
path |
支持 | |
module |
支持 | |
process |
部分支持 | 尚不支持操控用户 ID、群组成员资格和工作目录的功能 支持。 |
punycode |
支持 | |
querystring |
支持 | |
readline |
已停用 | 在 Apigee Edge 上运行的脚本没有标准输入。 |
repl |
已停用 | 在 Apigee Edge 上运行的脚本没有标准输入。 |
module |
已包含 | |
STDIO |
支持 |
标准输出和错误被路由到 Apigee Edge 内的日志文件 基础架构您可以点击 Node.js 日志 按钮以及 API 代理的 Apigee Edge 管理界面中。 在 Apigee Edge 上运行的脚本没有标准输入。不过,您可以将 参数。如需了解更多详情,请参阅高级 ScriptTarget 配置 。 |
stream |
支持 | |
string_decoder |
支持 | |
timers |
已包含 | |
tls |
支持 | 传输层安全协议 (TLS) 参数的工作方式与其在 常规 Node.js请参阅在 Apigee Edge 上使用 TLS (SSL) Node.js 模块 了解详情。 |
tty |
已停用 | 在 Apigee Edge 上运行的脚本没有标准输入。 |
url |
支持 | |
util |
支持 | |
vm |
支持 | |
zlib |
支持 |
其他支持的模块
本部分列出了标准 Node.js 不支持但 由在 Apigee Edge 上运行的 Trireme 和 Trireme 提供支持。Trireme 是一个开源 Node.js 容器,可在 Apigee Edge。它旨在在 Java 虚拟机 (JVM) 内运行 Node.js 脚本。以下所有权限: NPM 上提供了这些模块。
模块 | 说明 |
---|---|
apigee-access | 允许 Apigee Edge 平台上运行的 Node.js 应用访问 特定于 Apigee 的功能。您可以使用此模块执行以下操作:访问和修改流 变量、从安全存储区检索数据,以及使用边缘缓存、配额和 OAuth 服务。另请参阅使用 apigee-access 模块。 |
trireme-support | 让 Node.js 应用能够充分利用 Trireme 特有的功能。目前 只支持一项功能 - 加载用 Java 构建的 Node.js 模块。注意: Edge Cloud 不支持 loadJars。 |
trireme-xslt | 提供了 XLST 处理的抽象概念。它是专为 Trireme 设计的, 以便在运行 Node.js 应用时 Java。 |
trireme-jdbc | 提供从 Node.js 访问 JDBC 的权限。注意:在 Edge Cloud 中不受支持。适用于 Edge Private Cloud 上,您可以将 JDPC JAR 文件放在类路径中并使用此模块。 |
支持常用的 Node.js 模块
Node.js 脚本限制
但请注意,Edge 会对 Node.js 脚本施加某些限制,例如 以下:
- Apigee Edge 环境中的 Node.js 应用无法访问互联网上的服务 这要得益于边缘网络架构
- 文件系统访问权限仅限于启动 Node.js 脚本的目录: /resources/node 目录中。Node.js 脚本可以读取和写入此目录中的文件, 作为临时暂存区,但无法保证文件 持久保留。
- 尝试监听传入的 TCP 连接会产生异常。
- 尚不支持操控用户 ID、群组成员资格和工作目录的功能 支持。
- 对于标准输入,您只能使用 ScriptTarget 中的
元素。请参阅高级
ScriptTarget 配置。
- 对于标准输出,您只能使用 Edge 中的 Node.js 日志按钮
代理的管理界面。您还可以使用“apigeetool getlogs”命令。有关
请参阅部署
独立的 Node.js 应用。
- 不支持依赖于原生代码的模块。
- 依赖 EcmaScript 6 功能的模块(如 Promise 和 Generators)则不
支持。
- Node.js 运行时标志,例如“harmony-proxies”不受支持。
设置 IP 连接限制 适用于私有云的 Edge
适用于私有云的 Edge 可限制 Node.js 代码访问 以“10.”表示,“192.168”和 localhost。如果您尝试访问这些 IP 地址, 会看到以下形式的错误:
{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }
您可以通过在以下位置设置 conf_nodejs_connect.ranges.denied 属性来修改这些限制: message-processors.properties 每个消息处理器都有一个单独的文件。默认情况下,此属性的值为:
- Edge 4.17.05 及更低版本:conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
- Edge 4.17.09 及更高版本:conf_nodejs_connect.ranges.denied=(意味着 无限制)
如需设置此属性,请执行以下操作:
- 打开 message-processor.properties 文件
编辑器。如果该文件不存在,请创建:
>六 /<inst_root>/apigee/customer/application/message-processor.properties - 根据需要设置属性。例如,要仅拒绝对 localhost 的访问:
conf_nodejs_connect.ranges.denied=127.0.0.1/32 - 保存更改。
- 确保属性文件归“apigee”所有用户:
> chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties - 重启消息处理器:
> /<inst_root>/apigee/apigee-service/bin/apigee-serviceedge-message-processor 重启
了解对 http 和 https 模块的支持
在 Apigee Edge 中运行的所有 Node.js 应用都必须使用 http
或
https
模块,用于监听传入的请求。如果您要部署一个
不会监听传入的请求,而是直接执行并退出。
http
和 https
模块的 listen
方法
Node.js 将端口号作为参数。例如:
svr.listen(process.env.PORT || 9000, function() { console.log('The server is running.'); });
这个“端口”参数在 Node.js 中是必需参数,但 Apigee Edge 会忽略此参数。相反, 运行 Node.js 脚本的 API 代理指定“虚拟主机”让它在监听 Node.js 应用使用这些虚拟主机,就像其他任何 Apigee Edge 一样 代理。
Apigee 中的每个环境至少有一个虚拟主机。虚拟主机定义
与 Apigee 组织的连接设置。环境中的所有 API 代理共享
多个虚拟主机。默认情况下,每个环境有两个虚拟主机:
default
和secure
。有关详情,请参见
获取虚拟主机和 API
开发生命周期。
apigeetool deploynodeapp
命令会生成 Apigee Edge 代理封装容器
Node.js 应用部署后,Node.js 应用将监听默认的
为环境定义的虚拟主机。Node.js 应用的网址始终是
http://{org_name}-{env_name}.apigee.net
。
处理传入 请求
与其他 Apigee Edge 应用一样,如果代理应用设置为监听
secure
虚拟主机,那么它将接受使用 HTTPS 的传入请求。
处理传出 请求
除了接收传入流量外,Apigee Edge 内的 Node.js 应用还可以使用
http
和 https
模块,用于像任何其他 Node.js 一样发出出站请求
应用。这些模块的工作方式与往常在 Node.js 中一样。
了解对 TLS 模块
Apigee Edge 支持 Node.js tls 模块。
此模块使用 OpenSSL 提供传输层安全协议 (TLS) 和/或安全套接字层
(SSL) 加密的数据流通信。您可以使用 tls
模块来创建
从 Edge 上运行的 Node.js 应用到后端服务的连接。
如需了解 tls
模块在 Apigee Edge 上的工作原理,请务必
了解如何在 Apigee Edge 上使用 virtual hosts
。Apigee 中的各种环境
具有至少一个虚拟主机。虚拟主机定义与
Apigee 组织。一个环境中的所有 API 代理都共享相同的虚拟主机。默认情况下
每个环境都有两个虚拟主机:default
和
secure
。有关虚拟主机的详细信息,请参见
获取虚拟主机和 API
开发生命周期。
现在,我们来看看 Apigee Edge 如何处理传入和传出的 TLS (SSL) 通信 Node.js 应用上的请求:
处理传入 请求
根据贵组织的虚拟主机配置方式,Edge 可为您提供以下功能 选项:
- 如果 API 代理已配置为监听
default
虚拟主机,则 通过 HTTP 接受请求。 - 如果 API 代理已配置为监听
secure
虚拟主机,则 接受通过 HTTPS 发送的请求。该网址将位于apigee.net
网域下,并且 将为“*.apigee.net
”使用通配符 SSL 证书。只要应用 向apigee.net
域发送请求,然后 SSL 证书会验证 。
处理传出 请求
您可以使用 tls
模块发出传出请求,方式与
通常是在 Node.js 中。从根本上说,您需要添加客户端密钥和证书
(.pem
文件)复制到 resources/node
目录下,并将它们加载到
脚本。如需了解如何使用 tls
模块及其方法,请参阅
Node.js TLS 模块文档。
高级 ScriptTarget 配置
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>
<ph type="x-smartling-placeholder">