Edge Microgate 操作和配置参考

您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

Edge Microgateway v. 3.3.x

本主题讨论如何管理和配置 Edge Microgateway。

在连接到互联网的情况下升级 Edge Microgateway

本部分介绍如何升级现有安装的 Edge Microgateway。如果您在没有互联网连接的情况下操作,请参阅我可以在没有互联网连接的情况下安装 Edge Microgateway 吗?

Apigee 建议您在升级生产环境之前,使用新版本测试现有配置。

  1. 执行以下 npm 命令以升级到最新版本的 Edge Microgateway:
    npm upgrade edgemicro -g

    如需安装特定版本的 Edge Microgateway,您需要在安装命令中指定版本号。例如,如需安装到 3.2.3 版,请使用以下命令:

    npm install edgemicro@3.2.3 -g
  2. 检查版本号。例如,如果您安装了版本 3.2.3:
    edgemicro --version
    current nodejs version is v12.5.0
    current edgemicro version is 3.2.3
        
  3. 最后,升级到最新版本的 edgemicro-auth 代理:
    edgemicro upgradeauth -o $ORG -e $ENV -u $USERNAME

更改配置

您需要了解的配置文件包括:

  • 默认系统配置文件
  • 新初始化的 Edge Microgateway 实例的默认配置文件
  • 用于正在运行的实例的动态配置文件

本节讨论这些文件以及更改这些文件需要注意的事项。

默认系统配置文件

安装 Edge Microgateway 时,默认系统配置文件会放在此处:

prefix/lib/node_modules/edgemicro/config/default.yaml

其中,prefixnpm 前缀目录。如果找不到此目录,请参阅 Edge Microgateway 的安装位置

如果更改系统配置文件,则必须重新初始化、重新配置并重启 Edge Microgateway:

edgemicro init
edgemicro configure [params]
edgemicro start [params]

新初始化的 Edge Microgateway 实例的默认配置文件

当您运行 edgemicro init 时,系统配置文件 default.yaml(如上文所述)会放置在 ~/.edgemicro 目录中。

如果您在 ~/.edgemicro 中更改配置文件,则必须重新配置并重启 Edge Microgateway:

edgemicro stop
edgemicro configure [params]
edgemicro start [params]

用于正在运行的实例的动态配置文件

当您运行 edgemicro configure [params] 时,系统会在 ~/.edgemicro 中创建动态配置文件。该文件按以下模式命名:org-env-config.yaml,其中 orgenv 是您的 Apigee Edge 组织和环境名称。您可以使用此文件更改配置,然后在零停机的情况下重新加载它们。例如,如果您添加和配置了一个插件,则可以重新加载配置,而不会导致任何停机,如下所述。

如果 Edge Microgateway 正在运行(零停机选项)

  1. 重新加载 Edge Microgateway 配置:
    edgemicro reload -o $ORG -e $ENV -k $KEY -s $SECRET

    其中:

    • $ORG 是您的 Edge 组织名称(您必须是组织管理员)。
    • $ENV 是贵组织的环境(例如“test”或“prod”)。
    • $KEY 是 configure 命令之前返回的键。
    • $SECRET 是 configure 命令之前返回的键。

    例如:

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \
      -s 05c14356e42ed1...4e34ab0cc824

如果 Edge Microgateway 停止

  1. 重启 Edge Microgateway:
    edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET

    其中:

    • $ORG 是您的 Edge 组织名称(您必须是组织管理员)。
    • $ENV 是组织中的环境(例如“测试”或“生产”)。
    • $KEY 是 configure 命令之前返回的键。
    • $SECRET 是 configure 命令之前返回的键。

    例如:

    edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \
      -s 05c1435...e34ab0cc824

下面是一个配置文件示例。如需详细了解配置文件设置,请参阅 Edge Microgateway 配置参考文档

edge_config:
  bootstrap: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test
  jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey'
  managementUri: 'https://api.enterprise.apigee.com'
  vaultName: microgateway
  authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
  baseUri: >-
    https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
  bootstrapMessage: Please copy the following property to the edge micro agent config
  keySecretMessage: The following credentials are required to start edge micro
  products: 'https://docs-test.apigee.net/edgemicro-auth/products'
edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
headers:
  x-forwarded-for: true
  x-forwarded-host: true
  x-request-id: true
  x-response-time: true
  via: true
oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey'
analytics:
  uri: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test

设置环境变量

需要 Edge 组织和环境的值以及启动 Edge Microgateway 所需的密钥和密钥的命令行界面命令可存储在以下环境变量中:

  • EDGEMICRO_ORG
  • EDGEMICRO_ENV
  • EDGEMICRO_KEY
  • EDGEMICRO_SECRET

设置这些变量是可选操作。如果已设置这些参数,则在使用命令行界面 (CLI) 配置和启动 Edge Microgateway 时,您不必指定它们的值。

在 Edge Microgateway 服务器上配置 SSL

观看以下视频,了解如何在 Apigee Edge Microgateway 中配置 TLS:

视频 说明
配置单向北向 TLS 了解如何在 Apigee Edge Microgateway 中配置 TLS。本视频简要介绍了 TLS 及其重要性,在 Edge Microgateway 中介绍了 TLS,并演示了如何配置北向单向 TLS。
配置双向北向 TLS 这是介绍如何在 Apigee Edge Microgateway 中配置 TLS 的第二个视频。此视频介绍了如何配置北向双向 TLS。
配置单向和双向南向 TLS 这是关于在 Apigee Edge Microgateway 中配置 TLS 的第三个视频介绍了如何配置南向单向 TLS 和双向 TLS。

您可以将 Microgateway 服务器配置为使用 SSL。例如,在配置 SSL 后,您可以通过使用“https”协议的 Edge Microgateway 调用 API,如下所示:

https://localhost:8000/myapi

如需在 Microgateway 服务器上配置 SSL,请按以下步骤操作:

  1. 使用 openssl 实用程序或您偏好的任何方法生成或获取 SSL 证书和密钥。
  2. edgemicro:ssl 属性添加到 Edge Microgateway 配置文件。如需查看完整的选项列表,请参阅下表。例如:
    edgemicro:
      ssl:
       key: <absolute path to the SSL key file>
       cert: <absolute path to the SSL cert file>
       passphrase: admin123 #option added in v2.2.2
       rejectUnauthorized: true #option added in v2.2.2
       requestCert: true
  3. 重启 Edge Microgateway。根据您修改的配置文件(默认文件或运行时配置文件),按照更改配置中所述的步骤操作。

以下是配置文件的 edgemicro 部分的示例,其中配置了 SSL:

edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
  ssl:
    key: /MyHome/SSL/em-ssl-keys/server.key
    cert: /MyHome/SSL/em-ssl-keys/server.crt
    passphrase: admin123 #option added in v2.2.2
    rejectUnauthorized: true #option added in v2.2.2

下面列出了所有支持的服务器选项:

选项 说明
key 指向 ca.key 文件的路径(PEM 格式)。
cert 指向 ca.cert 文件的路径(PEM 格式)。
pfx pfx 文件的路径,该文件包含客户端的私钥、证书和 CA 证书(PFX 格式)。
passphrase 包含私钥或 PFX 的密码的字符串。
ca 指向包含 PEM 格式的可信证书列表的文件的路径。
ciphers 描述要使用的加密的字符串,以“:”分隔。
rejectUnauthorized 如果为 true,则根据提供的 CA 列表验证服务器证书。如果验证失败,则会返回错误。
secureProtocol 要使用的 SSL 方法。例如,SSLv3_method 将 SSL 强制更新到版本 3。
servername SNI(服务器名称指示)TLS 扩展的服务器名称。
requestCert 对于双向 SSL,为 true;对于单向 SSL,为 false

使用客户端 SSL/TLS 选项

在连接到目标端点时,您可以将 Edge Microgateway 配置为 TLS 或 SSL 客户端。在 Microgateway 配置文件中,使用目标元素设置 SSL/TLS 选项。请注意,您可以指定多个特定目标。下面提供了一个多目标示例。

以下示例提供了将应用于所有主机的设置:

edgemicro:
...
targets:
  ssl:
    client:
      key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key
      cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt
      passphrase: admin123
      rejectUnauthorized: true

在此示例中,设置仅应用于指定的主机:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    ssl:
      client:
        key: /Users/myname/twowayssl/ssl/client.key
        cert: /Users/myname/twowayssl/ssl/ca.crt
        passphrase: admin123
        rejectUnauthorized: true

以下是 TLS 的示例:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    tls:
      client:
        pfx: /Users/myname/twowayssl/ssl/client.pfx
        passphrase: admin123
        rejectUnauthorized: true

如果要将 TLS/SSL 设置应用于多个特定目标,您必须将配置中的第一个主机指定为“空”,这样会启用通用请求,然后按任意顺序指定特定主机。在此示例中,这些设置将应用于多个特定主机:

targets:
 - host:   ## Note that this value must be "empty"
   ssl:
     client:
       key: /Users/myname/twowayssl/ssl/client.key
       cert: /Users/myname/twowayssl/ssl/ca.crt
       passphrase: admin123
       rejectUnauthorized: true
 - host: 'myserver1.example.com'
   ssl:
     client:
       key: /Users/myname/twowayssl/ssl/client.key
       cert: /Users/myname/twowayssl/ssl/ca.crt
       rejectUnauthorized: true
 - host: 'myserver2.example.com'
   ssl:
     client:
       key: /Users/myname/twowayssl/ssl/client.key
       cert: /Users/myname/twowayssl/ssl/ca.crt
       rejectUnauthorized: true

下面列出了所有支持的客户端选项:

选项 说明
pfx pfx 文件的路径,该文件包含客户端的私钥、证书和 CA 证书(PFX 格式)。
key 指向 ca.key 文件的路径(PEM 格式)。
passphrase 包含私钥或 PFX 的密码的字符串。
cert 指向 ca.cert 文件的路径(PEM 格式)。
ca 指向包含 PEM 格式的可信证书列表的文件的路径。
ciphers 描述要使用的加密的字符串,以“:”分隔。
rejectUnauthorized 如果为 true,则根据提供的 CA 列表验证服务器证书。如果验证失败,则会返回错误。
secureProtocol 要使用的 SSL 方法。例如,SSLv3_method 将 SSL 强制更新到版本 3。
servername SNI(服务器名称指示)TLS 扩展的服务器名称。

自定义 Edgemicro-auth 代理

默认情况下,Edge Microgateway 使用部署在 Apigee Edge 上的代理进行 OAuth2 身份验证。此代理会在您首次运行 edgemicro configure 时部署。您可以更改此代理的默认配置,以向 JSON Web 令牌 (JWT) 添加对自定义声明的支持,配置令牌到期时间,以及生成刷新令牌。如需了解详情,请参阅 GitHub 中的 edgemicro-auth 页面。

使用自定义身份验证服务

默认情况下,Edge Microgateway 使用部署在 Apigee Edge 上的代理进行 OAuth2 身份验证。此代理会在您首次运行 edgemicro configure 时部署。默认情况下,此代理的网址在 Edge Microgateway 配置文件中指定,如下所示:

authUri: https://myorg-myenv.apigee.net/edgemicro-auth

如果要使用自己的自定义服务来处理身份验证,请将配置文件中的 authUri 值更改为指向您的服务。例如,您可能有一项服务使用 LDAP 来验证身份。

管理日志文件

Edge Microgateway 会记录每个请求和响应的相关信息。日志文件为调试和问题排查提供有用的信息。

日志文件的存储位置

默认情况下,日志文件存储在 /var/tmp 中。

如何更改默认的日志文件目录

存储日志文件的目录在 Edge Microgateway 配置文件中指定。另请参阅更改配置

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

更改 dir 值以指定其他日志文件目录。

将日志发送到控制台

您可以配置日志记录,以便将日志信息发送到标准输出而不是日志文件。将 to_console 标志设置为 true,如下所示:

edgemicro:
  logging:
    to_console: true

如果使用此设置,日志将发送至标准输出。目前,您无法将日志同时发送到 stdout 和日志文件。

如何设置日志记录级别

您可以在 edgemicro 配置中指定要使用的日志级别。如需查看日志级别及其说明的完整列表,请参阅 edgemicro 属性

例如,以下配置将日志记录级别设置为 debug

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: debug
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

如何更改日志间隔

您可以在 Edge Microgateway 配置文件中配置这些时间间隔。另请参阅更改配置

可配置的属性包括:

  • stats_log_interval:(默认值:60)将统计信息记录写入 API 日志文件时的间隔时间(以秒为单位)。
  • rotate_interval:(默认值:24)轮替日志文件时的间隔时间(以小时为单位)。例如:
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

如何放宽严格的日志文件权限

默认情况下,Edge Microgateway 会生成应用日志文件 (api-log.log),文件权限级别设置为 0600。此权限级别不允许外部应用或用户读取日志文件。如需放宽此严格的权限级别,请将 logging:disableStrictLogFile 设置为 true。如果此属性为 true,则创建日志文件时将文件权限设置为 0755。如果为 false 或未提供该属性,则权限默认为 0600。

在 v3.2.3 中引入。

例如:

edgemicro:
 logging:
   disableStrictLogFile: true

日志文件维护的正确做法

随着日志文件数据的累积,Apigee 建议您采用以下做法:

  • 由于日志文件可能会非常大,因此请确保日志文件目录有足够的空间。请参阅下面的日志文件的存储位置如何更改默认日志文件目录部分。
  • 每周至少删除一次日志文件,或将日志文件移动到一个单独的归档目录。
  • 如果您的政策是删除日志,您可以使用 CLI 命令 edgemicro log -c 移除(干净)较旧的日志。

日志文件命名惯例

每个 Edge Microgateway 实例都会生成一个扩展名为 .log 的日志文件。日志文件的命名惯例如下所示:

edgemicro-HOST_NAME-INSTANCE_ID-api.log

例如:

edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log

关于日志文件内容

添加此模块的版本:v2.3.3

默认情况下,日志记录服务会忽略下载的代理、产品和 JSON 网络令牌 (JWT) 的 JSON。如果要将这些对象输出到控制台,请在启动 Edge Microgateway 时设置命令行标志 DEBUG=*。例如:

DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456

“api”日志文件的内容

“api”日志文件包含有关通过 Edge Microgateway 的请求和响应流的详细信息。“api”日志文件的名称如下所示:

edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log

对于向 Edge Microgateway 发出的每个请求,“api”日志文件中会捕获四个事件:

  • 来自客户端的传入请求
  • 向目标发出的传出请求
  • 来自目标的传入响应
  • 对客户端的传出响应

其中每个单独的条目都通过简写表示法表示,以帮助使日志文件更紧凑。以下是分别代表这四个事件的四个示例条目。在日志文件中,行号如下所示(行号仅供在文档中参考,不会出现在日志文件中)。

(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
(2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0
(3) 1436403888672 info tres s=200, d=7, i=0
(4) 1436403888676 info res s=200, d=11, i=0

下面我们将逐一进行介绍:

1. 来自客户端的传入请求示例:

1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
  • 1436403888651 - Unix 日期戳
  • info - 日志记录级别。此值取决于事务的上下文以及 edgemicro 配置中设置的日志记录级别。请参阅如何设置日志记录级别。 对于统计数据记录,级别设置为 stats。统计信息记录会定期报告使用 stats_log_interval 配置设置的时间间隔。另请参阅如何更改日志间隔
  • req - 标识事件。在这种情况下,应收到来自客户端的请求。
  • m - 请求中使用的 HTTP 动词。
  • u - 网址中基本路径后面的部分。
  • h - Edge Microgateway 正在监听的主机和端口号。
  • r - 发起客户端请求的远程主机和端口。
  • i - 请求 ID。所有四个活动条目将共用此 ID。系统会为每个请求分配一个唯一的请求 ID。通过按请求 ID 关联日志记录,您可以深入了解目标的延迟时间。
  • d - 自 Edge Microgateway 收到请求后经过的时长(以毫秒为单位)。在上面的示例中,目标在 7 毫秒后(第 3 行)收到请求 0 的响应,并在额外的 4 毫秒后(第 4 行)将响应发送到客户端。换句话说,总请求延迟时间为 11 毫秒,其中目标为 7 毫秒,Edge Microgateway 本身为 4 毫秒。

2. 向目标发出的传出请求的示例:

1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
  • 1436403888651 - Unix 日期戳
  • info - 日志记录级别。此值取决于事务的上下文以及 edgemicro 配置中设置的日志记录级别。请参阅如何设置日志记录级别。 对于统计数据记录,级别设置为 stats。统计信息记录会定期报告使用 stats_log_interval 配置设置的时间间隔。另请参阅如何更改日志间隔
  • treq - 标识事件。在本例中,即是目标请求。
  • m - 目标请求中使用的 HTTP 动词。
  • u - 网址中基本路径后面的部分。
  • h - 后端目标的主机和端口号。
  • i - 日志条目的 ID。所有四个事件条目将共用此 ID。

3. 来自目标的传入响应示例

1436403888672 info tres s=200, d=7, i=0

1436403888651 - Unix 日期戳

  • info - 日志记录级别。此值取决于事务的上下文以及 edgemicro 配置中设置的日志记录级别。请参阅如何设置日志记录级别。 对于统计数据记录,级别设置为 stats。统计信息记录会定期报告使用 stats_log_interval 配置设置的时间间隔。另请参阅如何更改日志间隔
  • tres - 标识事件。在本例中,选择目标响应。
  • s - HTTP 响应状态。
  • d - 时长(以毫秒为单位)。目标进行 API 调用所花费的时间。
  • i - 日志条目的 ID。所有四个事件条目将共用此 ID。

4. 对客户端的传出响应示例

1436403888676 info res s=200, d=11, i=0

1436403888651 - Unix 日期戳

  • info - 日志记录级别。此值取决于事务的上下文以及 edgemicro 配置中设置的日志记录级别。请参阅如何设置日志记录级别。 对于统计数据记录,级别设置为 stats。统计信息记录会定期报告使用 stats_log_interval 配置设置的时间间隔。另请参阅如何更改日志间隔
  • res - 标识事件。在这种情况下,是对客户端的响应。
  • s - HTTP 响应状态。
  • d - 时长(以毫秒为单位)。这是 API 调用所用的总时间,包括目标 API 所用的时间以及 Edge Microgateway 本身所用的时间。
  • i - 日志条目的 ID。所有四个事件条目将共用此 ID。

日志文件计划

日志文件按 rotate_interval 配置属性指定的间隔轮替。系统会继续向同一日志文件中添加条目,直到轮替间隔到期。但是,每次重启 Edge Microgateway 时,它都会收到一个新的 UID,并使用此 UID 创建一组新的日志文件。另请参阅良好的日志文件维护做法

错误消息

某些日志条目将包含错误消息。如需帮助确定发生错误的位置和原因,请参阅 Edge Microgateway 错误参考文档

Edge Microgateway 配置参考文档

配置文件的位置

本部分介绍的配置属性位于 Edge Microgateway 配置文件中。另请参阅更改配置

Edge_config 属性

这些设置用于配置 Edge Microgateway 实例与 Apigee Edge 之间的交互。

  • 引导加载程序:(默认值:无)一个网址,指向在 Apigee Edge 上运行的 Edge Microgateway 专用服务。Edge Microgateway 使用此服务与 Apigee Edge 通信。当您执行生成公钥/私钥对的命令时,系统会返回此网址:edgemicro genkeys。如需了解详情,请参阅设置和配置 Edge Microgateway
  • jwt_public_key:(默认值:none)指向 Apigee Edge 上部署的 Edge Microgateway 代理的网址。此代理充当向客户端颁发已签名的访问令牌的身份验证端点。当您执行命令来部署代理时,系统会返回此网址:edgemicro configure。如需了解详情,请参阅设置和配置 Edge Microgateway
  • quotaUri:如果您希望通过部署到贵组织的 edgemicro-auth 代理来管理配额,请设置此配置属性。如果未设置此属性,则配额端点默认为内部 Edge Microgateway 端点。
    edge_config:
      quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
    

Edgemicro 属性

这些设置用于配置 Edge Microgateway 进程。

  • port:(默认值:8000)Edge Microgateway 进程用于监听的端口号。
  • max_connections:(默认值:-1)指定 Edge Microgateway 可以接收的并发传入连接数上限。如果超出此数量,系统会返回以下状态:

    res.statusCode = 429; // Too many requests
  • max_connections_hard:(默认值:-1)Edge Microgateway 在关闭连接之前可以接收的并发请求数量上限。此设置旨在阻止拒绝服务攻击。通常,应将其设置为大于 max_connections 的数字。
  • logging
    • level:(默认值:error)
      • info -(推荐)记录流经 Edge Microgateway 实例的所有请求和响应。
      • warn - 仅记录警告消息。
      • error - 仅记录错误消息。
      • debug - 记录调试消息以及信息、警告和错误消息。
      • trace - 记录有关错误的跟踪信息,以及信息、警告和错误消息。
      • none - 不创建日志文件。
    • dir:(默认值:/var/tmp)存储日志文件的目录。
    • stats_log_interval:(默认值:60)将统计信息记录写入 API 日志文件时的间隔时间(以秒为单位)。
    • rotate_interval:(默认值:24)轮替日志文件时的间隔时间(以小时为单位)。
  • plugins:插件用于向 Edge Microgateway 添加功能。如需详细了解如何开发插件,请参阅开发自定义插件
  • dir:从 ./gateway 目录到 ./plugins 目录的相对路径,或绝对路径。
  • sequence:要添加到 Edge Microgateway 实例的插件模块列表。这些模块将按照它们在此处指定的顺序执行。
  • debug :向 Edge Microgateway 进程添加了远程调试功能。
    • port:要监听的端口号。例如,您可以将 IDE 调试程序设置为监听此端口。
    • args:调试进程的参数。例如:args --nolazy
  • config_change_poll_interval::(默认值:600 秒)Edge Microgateway 会定期加载新配置,并在进行任何更改后执行重新加载。此轮询会纳入对 Edge 所做的更改(对产品、微网关感知代理的更改等)以及对本地配置文件的更改。
  • disable_config_poll_interval::(默认值:false)设置为 disable_config_poll_interval:disable_config_poll_interval:自动更改轮询。
  • request_timeout:设置目标请求的超时。超时设置以秒为单位。如果发生超时,Edge Microgateway 会返回 504 状态代码。(新增 v2.4.x)
  • keep_alive_timeout:可让您设置 Edge Microgateway 超时(以毫秒为单位)。(默认值:5 秒)(新增 v3.0.6)
  • headers_timeout:此属性限制 HTTP 解析器等待接收完整 HTTP 标头的时间量(以毫秒为单位)。

    例如:

    edgemicro:
      keep_alive_timeout: 6000
      headers_timeout: 12000

    在内部,该参数在请求中设置 Node.js Server.headersTimeout 属性。(默认:比使用 edgemicro.keep_alive_timeout 设置的时间长 5 秒。此默认设置可防止负载平衡器或代理错误地断开连接。)(新增 v3.1.1)

  • noRuleMatchAction:(字符串)在 accesscontrol 插件中指定的匹配规则未解析(不匹配)时要执行的操作(允许或拒绝访问)。有效值:ALLOWDENY 默认值:ALLOW(新增:v3.1.7)
  • enableAnalytics:(默认值:true)将该属性设置为 false 可阻止加载分析插件。在这种情况下,系统不会调用 Apigee Edge 分析。如果设置为 true,或未提供此属性,则分析插件将照常运行。如需了解详情,请参阅 edgemicro 属性。(添加了 v3.1.8)。

    示例:

    edgemicro
      enableAnalytics=false|true
  • on_target_response_abort:您可以通过此属性控制当客户端 (Edge Microgateway) 与目标服务器之间的连接过早关闭时 Edge Microgateway 的行为。
    说明
    默认 如果未指定 on_target_response_abort,则默认行为是截断响应而不显示错误。在日志文件中,系统会显示一条警告消息,其中包含 targetResponse aborted 和 502 响应代码。
    appendErrorToClientResponseBody 系统会将自定义错误 TargetResponseAborted 返回给客户端。在日志文件中,系统会显示一条警告消息,其中包含 targetResponse aborted 和 502 响应代码。此外,还会记录错误 TargetResponseAborted 并显示消息 Target response ended prematurely.
    abortClientRequest Edge Microgateway 会中止请求,并向日志文件 TargetResponseAborted 写入包含 502 请求状态代码的警告。

例如:

edgemicro:
 on_target_response_abort: appendErrorToClientResponseBody | abortClientRequest

标头属性

这些设置用于配置特定 HTTP 标头的处理方式。

  • x-forwarded-for:(默认值:true)设置为 false 可阻止 x-forwarded-for 标头传递到目标。请注意,如果请求中包含 x-forwarded-for 标头,其值在 Edge Analytics 中将被设置为 client-ip 值。
  • x-forwarded-host:(默认值:true)设置为 false 可阻止将 x-forwarded-host 标头传递给目标。
  • x-request-id:(默认值:true)设置为 false 可阻止将 x-request-id 标头传递给目标。
  • x-response-time:(默认值:true)设置为 false 可防止将 x-response-time 标头传递给目标。
  • via:(默认值:true)设置为 false 可阻止通过标头传递给目标。

OAuth 属性

这些设置用于配置 Edge Microgateway 强制执行客户端身份验证的方式。

  • allowNoAuthorization:(默认值:false)如果设置为 true,则允许 API 调用在没有任何 Authorization 标头的情况下通过 Edge Microgateway。如果需要授权标头,请将此项设置为 false(默认)。
  • allowInvalidAuthorization:(默认值:false)如果设置为 true,则在 Authorization 标头中传递的令牌无效或过期时,允许 API 调用通过。请将此字段设置为 false 以要求提供有效令牌(默认)。
  • authorization-header:(默认值: Authorization: Bearer)用于将访问令牌发送到 Edge Microgateway 的标头。如果目标需要使用 Authorization 标头实现其他目的,您可能希望更改默认设置。
  • api-key-header:(默认值:x-api-key)用于将 API 密钥传递给 Edge Microgateway 的标头或查询参数的名称。另请参阅使用 API 密钥
  • keep-authorization-header:(默认值:false)如果设置为 true,则系统会将请求中发送的 Authorization 标头传递给目标(保留该标头)。
  • allowOAuthOnly - 如果设置为 true,则每个 API 都必须带有包含不记名访问令牌的授权标头。您可以仅允许使用 OAuth 安全模型(同时保持向后兼容性)。(添加于 2.4.x)
  • allowAPIKeyOnly - 如果设置为 true,则每个 API 都必须带有 API 密钥的 x-api-key 标头(或自定义位置)。通过该标头,您可以仅允许使用 API 密钥安全模型(同时保持向后兼容性)。(添加了 2.4.x)
  • gracePeriod - 此参数有助于防止由于系统时钟与 JWT 授权令牌中指定的不早于 (nbf) 或颁发时间 (iat) 时间之间存在细微差异而引发的错误。请将此参数设置为允许这种差异的秒数。(添加日期:2.5.7)

插件专用属性

如需详细了解每个插件的可配置属性,请参阅“使用插件”。

过滤代理

您可以过滤 Edge Microgateway 实例将处理哪些微网关感知代理。Edge Microgateway 启动时,它会下载关联的组织中所有能够感知微网关的代理。使用以下配置来限制微网关将处理的代理。例如,以下配置将微网关将处理的代理限制为三个:edgemicro_proxy-1edgemicro_proxy-2edgemicro_proxy-3

edgemicro:
  proxies:
  - edgemicro_proxy-1
  - edgemicro_proxy-2
  - edgemicro_proxy-3

按名称过滤产品

使用以下配置限制 Edge Microgateway 下载和处理的 API 产品的数量。如需过滤下载的产品,请将 productnamefilter 查询参数添加到 Edge Microgateway *.config.yaml 文件中列出的 /products API 中。例如:

edge_config:
  bootstrap: >-
    https://edgemicroservices.apigee.net/edgemicro/bootstrap/organization/willwitman/environment/test
  jwt_public_key: 'https://myorg-test.apigee.net/edgemicro-auth/publicKey'
  managementUri: 'https://api.enterprise.apigee.com'
  vaultName: microgateway
  authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
  baseUri: >-
    https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
  bootstrapMessage: Please copy the following property to the edge micro agent config
  keySecretMessage: The following credentials are required to start edge micro
  products: 'https://myorg-test.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24'

请注意,查询参数的值必须以正则表达式格式指定,并采用网址编码。例如,正则表达式 ^[Ee]dgemicro.*$ 可捕获“edgemicro-test-1”“edgemicro_demo”和“Edgemicro_New_Demo”等名称。适合在查询参数中使用的网址编码值是:%5E%5BEe%5Ddgemicro.%2A%24

以下调试输出显示,系统仅下载了过滤出的商品:

...
2020-05-27T03:13:50.087Z [76060] [microgateway-config network] products download from https://gsc-demo-prod.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24 returned 200 OK
...
....
....
{
   "apiProduct":[
      {
         "apiResources":[

         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1590549037549,
         "createdBy":"k***@g********m",
         "displayName":"test upper case in name",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1590549037549,
         "lastModifiedBy":"k***@g********m",
         "name":"Edgemicro_New_Demo",
         "proxies":[
            "catchall"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[

         ]
      },
      {
         "apiResources":[

         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1590548328998,
         "createdBy":"k***@g********m",
         "displayName":"edgemicro test 1",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1590548328998,
         "lastModifiedBy":"k***@g********m",
         "name":"edgemicro-test-1",
         "proxies":[
            "Lets-Encrypt-Validation-DoNotDelete"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[

         ]
      },
      {
         "apiResources":[
            "/",
            "/**"
         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1558182193472,
         "createdBy":"m*********@g********m",
         "displayName":"Edge microgateway demo product",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1569077897465,
         "lastModifiedBy":"m*********@g********m",
         "name":"edgemicro_demo",
         "proxies":[
            "edgemicro-auth",
            "edgemicro_hello"
         ],
         "quota":"600",
         "quotaInterval":"1",
         "quotaTimeUnit":"minute",
         "scopes":[

         ]
      }
   ]
}

按自定义属性过滤商品

如需根据自定义属性过滤商品,请执行以下操作:

  1. 在 Edge 界面中,选择您在配置 Edge Microgateway 的组织/环境中的 edgemicro_auth 代理。
  2. 在“开发”点按面板中,打开编辑器中的 JavaCallout 政策。
  3. 添加键为 products.filter.attributes 的自定义属性和以英文逗号分隔的属性名称列表。只有包含任意自定义属性名称的产品才会返回到 Edge Microgateway。
  4. 您可以视需要将自定义属性 products.filter.env.enable 设置为 false,以停用检查产品是否已针对当前环境启用。(默认值为 true)。
  5. (仅限 Private Cloud)如果您使用的是适用于 Private Cloud 的 Edge,请将属性 org.noncps 设置为 true 以拉取适用于非 CPS 环境的产品。
  6. 例如:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout">
        <DisplayName>JavaCallout</DisplayName>
        <FaultRules/>
        <Properties>
            <Property name="products.filter.attributes">attrib.one, attrib.two</Property>
            <Property name="products.filter.env.enable">false</Property>
            <Property name="org.noncps">true</Property>
        </Properties>
        <ClassName>io.apigee.microgateway.javacallout.Callout</ClassName>
        <ResourceURL>java://micro-gateway-products-javacallout-2.0.0.jar</ResourceURL>
    </JavaCallout>
    

配置分析推送频率

使用以下配置参数来控制 Edge Microgateway 向 Apigee 发送分析数据的频率:

  • bufferSize(可选):在开始删除最早的记录之前,缓冲区可以容纳的最大分析记录数。默认值:10000
  • batchSize(可选):发送到 Apigee 的一批分析记录的大小上限。默认值:500
  • flushInterval(可选):发送到 Apigee 的一批分析记录每次刷新间隔的毫秒数。默认值:5000

例如:

analytics:
  bufferSize: 15000
  batchSize: 1000
  flushInterval: 6000

遮盖分析数据

以下配置可防止请求路径信息在 Edge 分析中显示。将以下内容添加到微网关配置中,以遮盖请求 URI 和/或请求路径。请注意,URI 由请求的主机名和路径部分组成。

analytics:
  mask_request_uri: 'string_to_mask'
  mask_request_path: 'string_to_mask'

在 Edge Analytics 中隔离 API 调用

您可以将分析插件配置为隔离特定的 API 路径,使其在 Edge Analytics 信息中心内显示为单独的代理。例如,您可以在信息中心内隔离健康检查 API,以免将其与实际的 API 代理调用混淆。在 Analytics 信息中心内,隔离代理遵循以下命名模式:

edgemicro_proxyname-health

下图显示了 Analytics 信息中心内的两个隔离的代理:edgemicro_hello-healthedgemicro_mock-health

使用以下参数可将 Analytics 信息中心内的相对路径和绝对路径隔离为单独的代理:

  • relativePath(可选):在 Analytics 信息中心内指定要隔离的相对路径。例如,如果指定 /healthcheck,则包含路径 /healthcheck 的所有 API 调用都将在信息中心内显示为 edgemicro_proxyname-health。请注意,此标志会忽略代理基本路径。 如需根据完整路径(包括基本路径)进行隔离,请使用 proxyPath 标志。
  • proxyPath(可选):指定要在分析信息中心内隔离的完整 API 代理路径(包括代理基本路径)。例如,如果您指定 /mocktarget/healthcheck(其中 /mocktarget 是代理基本路径),则路径为 /mocktarget/healthcheck 的所有 API 调用都将在信息中心内显示为 edgemicro_proxyname-health

例如,在以下配置中,分析插件会隔离包含 /healthcheck 的任何 API 路径。这意味着,/foo/healthcheck/foo/bar/healthcheck 将在分析信息中心内隔离为名为 edgemicro_proxyname-health 的单独代理。

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  relativePath: /healthcheck

在以下配置中,代理路径为 /mocktarget/healthcheck 的任何 API 都将在分析信息中心内隔离为名为 edgemicro_proxyname-health 的单独代理。

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  proxyPath: /mocktarget/healthcheck

设置在公司防火墙后面的 Edge Microgateway

使用 HTTP 代理与 Apigee Edge 通信

在版本 3.1.2 中引入。

如需使用 HTTP 代理在 Edge Microgateway 与 Apigee Edge 之间进行通信,请执行以下操作:

  1. 设置环境变量 HTTP_PROXYHTTPS_PROXYNO_PROXY。这些变量用于控制您希望用于与 Apigee Edge 通信的每个 HTTP 代理的主机,或哪些主机不应处理与 Apigee Edge 的通信。例如:
    export HTTP_PROXY='http://localhost:3786'
    export HTTPS_PROXY='https://localhost:3786'
    export NO_PROXY='localhost,localhost:8080'

    请注意,NO_PROXY 可以是 Edge Microgateway 不应代理的网域列表(以英文逗号分隔)。

    如需详细了解这些变量,请参阅 https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables

  2. 重启 Edge Microgateway。

使用 HTTP 代理进行目标通信

在版本 3.1.2 中引入。

如需使用 HTTP 代理在 Edge Microgateway 与后端目标之间进行通信,请执行以下操作:

  1. 将以下配置添加到微网关配置文件中:
    edgemicro:
      proxy:
        tunnel: true | false
        url: proxy_url
        bypass: target_host # target hosts to bypass the proxy.
        enabled: true | false

    其中:

    • tunnel:(可选)如果为 true,Edge Microgateway 使用 HTTP CONNECT 方法通过单个 TCP 连接传送 HTTP 请求。(如果用于配置代理的环境变量启用了 TLS,也是如此(如下所述)。默认值:false
    • url:HTTP 代理网址。
    • bypass:(可选)指定应绕过 HTTP 代理的一个或多个目标主机网址(以英文逗号分隔)。如果未设置此属性,则使用 NO_PROXY 环境变量来指定要绕过的目标网址。
    • enabled:如果设置了 true 且 proxy.url 已设置,请对 HTTP 代理使用 proxy.url 值。如果为 true 且未设置 proxy.url,请使用 HTTP 代理环境变量 HTTP_PROXYHTTPS_PROXY 中指定的代理,如使用 HTTP 代理与 Apigee Edge 通信中所述。

    例如:

    edgemicro:
      proxy:
        tunnel: true
        url: 'http://localhost:3786'
        bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy.
        enabled: true

  2. 重启 Edge Microgateway。

在 Microgateway 感知代理中使用通配符

您可以在 edgemicro_*(Microgateway-aware)代理的基本路径中使用一个或多个“*”通配符。例如,/team/*/members 的基本路径允许客户端调用 https://[host]/team/blue/membershttps://[host]/team/green/members,而无需创建新的 API 代理来支持新团队。请注意,不支持 /**/

重要提示:Apigee 不支持将通配符“*”用作基本路径的第一个元素。例如,以下查询不受支持:/*/ 搜索。

轮替 JWT 密钥

在首次生成 JWT 后,您可能需要更改存储在 Edge 加密 KVM 中的公钥/私钥对。生成新密钥对的这一过程称为密钥轮替。

Edge Microgateway 如何使用 JWT

JSON Web 令牌 (JWT) 是 RFC7519 中所述的令牌标准。JWT 提供了一种对一组声明进行签名的方法,JWT 接收者可以可靠地验证它们。

您可以使用 CLI 生成 JWT,并将其用于 API 调用的授权标头(而非 API 密钥)。例如:

curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"

如需了解如何使用 CLI 生成 JWT,请参阅生成令牌

什么是密钥轮替?

在首次生成 JWT 后,您可能需要更改存储在 Edge 加密 KVM 中的公钥/私钥对。生成新密钥对的这一过程称为密钥轮替。轮替密钥时,系统会生成新的私钥/公钥对,并将其存储在 Apigee Edge 组织/环境中的“微网关”KVM 中。此外,旧公钥及其原始密钥 ID 值会保留。

为了生成 JWT,Edge 使用存储在加密 KVM 中的信息。在您首次设置(已配置)Edge Microgateway 时,系统会创建并填充名为 microgateway 的 KVM。KVM 中的密钥用于对 JWT 进行签名和加密。

KVM 键包括:

  • private_key - 用于为 JWT 签名的最新(最近创建的)RSA 私钥。

  • public_key - 用于验证使用 private_key 签名的 JWT 的最新(最新创建)证书。

  • private_key_kid - 最新(最近创建)的私钥 ID。此密钥 ID 与 private_key 值相关联,用于支持密钥轮替。

  • public_key1_kid - 最新(最近创建)的公钥 ID。此密钥与 public_key1 值相关联,用于支持密钥轮替。此值与私钥子项相同。

  • public_key1 - 最新(最近创建的)公钥。

执行密钥轮替时,系统会替换映射中的现有密钥值,并添加新密钥以保留旧公钥。例如:

  • public_key2_kid - 旧的公钥 ID。此密钥与 public_key2 值相关联,用于支持密钥轮替。

  • public_key2 - 旧的公钥。

系统将使用新的公钥验证用于验证的 JWT。如果验证失败,系统将使用旧公钥,直到 JWT 过期(在 token_expiry* 间隔后,默认为 30 分钟)。通过这种方式,您可以在不立即中断 API 流量的情况下“轮替”密钥。

如何进行密钥轮替

本部分介绍如何执行密钥轮替。

  1. 如需升级 KVM,请使用 edgemicro upgradekvm 命令。如需详细了解如何运行此命令,请参阅升级 KVM。您只需执行此步骤一次。
  2. 如需升级 edgemicro-oauth 代理,请使用 edgemicro upgradeauth 命令。如需详细了解如何运行此命令,请参阅 升级 edgemicro-auth 代理。您只需执行此步骤一次。
  3. 将以下行添加到 ~/.edgemicro/org-env-config.yaml 文件中,其中必须指定与配置微网关要使用的相同组织和环境:
    jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
  4. 运行密钥轮替命令以轮替密钥。如需详细了解此命令,请参阅轮替密钥

    edgemicro rotatekey -o $ORG -e $ENV -k $KEY -s $SECRET

    例如:

    edgemicro rotatekey -o docs -e test \
    -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \
    -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47
    

密钥轮替后,Edge 会向 Edge Microgateway 返回多个密钥。请注意,在下面的示例中,每个键都有一个唯一的“kid”(密钥 ID)值。然后,微网关使用这些密钥来验证授权令牌。如果令牌验证失败,微网关将查看密钥集中是否存在较旧的密钥,并尝试该密钥。返回的密钥采用 JSON Web 密钥 (JWK) 格式。如需了解此格式,请参阅 RFC 7517

{
  "keys": [
    {
      "kty": "RSA",
      "n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ",
      "e": "AQAB",
      "kid": "2"
    },
    {
      "kty": "RSA",
      "n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw",
      "e": "AQAB",
      "kid": "1"
    }
  ]
}

配置“不早于”延迟时间

对于 3.1.5 及更低版本,rotatekey 命令生成的新私钥会立即生效,并且生成的新令牌会使用新私钥进行签名。但是,只有在微网关配置刷新后,Edge Microgateway 实例每 10 分钟才会有新的公钥可供使用(默认情况下)。由于令牌签名和微网关实例刷新之间存在这种延迟,因此使用最新密钥签名的令牌将被拒绝,直到所有实例都收到最新的公钥。

在存在多个微网关实例的情况下,公钥延迟有时会导致间歇性运行时错误并显示状态 403,因为令牌验证会在一个实例上通过,但在另一个实例上会失败,直到所有实例均已刷新为止。

从版本 3.1.6 开始,rotatekey 命令中的新标志允许您指定新私钥生效的延迟时间,从而有时间刷新所有微网关实例并接收新公钥。新标志是 --nbf,代表“not before”。此标志采用一个整数值,即延迟的分钟数。

在以下示例中,延迟时间设置为 15 分钟:

edgemicro rotatekey -o docs -e test \
-k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \
-s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47 \
--nbf 15

请注意,最好将延迟时间设置为 config_change_poll_internal 配置设置的大小(默认为 10 分钟)。另请参阅 edgemicro 属性

过滤已下载的代理

默认情况下,Edge Microgateway 会下载 Edge 组织中以命名前缀“edgemicro_”开头的所有代理。您可以更改此默认设置,以下载名称与某个模式匹配的代理。

  1. 打开 Edge Micro 配置文件:~/.edgemicro/org-env-config.yaml
  2. 在 Edge_config 下添加 proxyPattern 元素。例如,以下模式将下载 Edgemicro_foo、edgemicro_fast 和 edgemicro_first 等代理。
    edge_config:
    …
    proxyPattern: edgemicro_f*

指定不使用 API 代理的产品

在 Apigee Edge 中,您可以创建不包含任何 API 代理的 API 产品。 此产品配置允许与该产品关联的 API 密钥与贵组织中部署的任何代理一起使用。从 2.5.4 版开始,Edge Microgateway 支持此产品配置。

调试和问题排查

连接到调试程序

您可以使用调试程序(例如 node-inspector)运行 Edge Microgateway。这对于排查和调试自定义插件非常有用。

  1. 在调试模式下重启 Edge Microgateway。为此,请将 DEBUG=* 添加到 start 命令的开头:
    DEBUG=* edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET

    如需将调试输出定向到文件,您可以使用以下命令:

    export DEBUG=* nohup edgemicro start \
    -o $ORG -e $ENV -k $KEY -s $SECRET 2>&1 | tee /tmp/file.log

  2. 启动调试程序,并将其设置为监听调试过程的端口号。
  3. 您现在可以单步调试 Edge Microgateway 代码、设置断点、监视表达式等。

您可以指定与调试模式相关的标准 Node.js 标志。例如,--nolazy 有助于调试异步代码。

检查日志文件

如果您遇到问题,请务必检查日志文件,了解执行详细信息和错误信息。如需了解详情,请参阅管理日志文件

使用 API 密钥安全性

API 密钥提供了一种简单的机制,用于对向 Edge Microgateway 发出请求的客户端进行身份验证。如需获取 API 密钥,您可以从包含 Edge Microgateway 身份验证代理的 Apigee Edge 产品复制使用方密钥(也称为客户端 ID)值。

缓存密钥

API 密钥交换为缓存的不记名令牌。如需停用缓存,您可以为 Edge Microgateway 的传入请求设置 Cache-Control: no-cache 标头。

使用 API 密钥

您可以在 API 请求中以查询参数的形式或标头的形式传递 API 密钥。默认情况下,标头和查询参数名称均为 x-api-key

查询参数示例:

curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz

标题示例:

curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

配置 API 密钥名称

默认情况下,x-api-key 是 API 密钥标头和查询参数使用的名称。您可以在配置文件中更改此默认值,如更改配置中所述。例如,将名称更改为 apiKey

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  api-key-header: apiKey

在此示例中,查询参数和标头名称都更改为 apiKey。无论是哪种情况,名称 x-api-key 都将不再有效。另请参阅更改配置

例如:

curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

如需详细了解如何将 API 密钥与代理请求搭配使用,请参阅 Secure Edge Microgateway

启用上游响应代码

默认情况下,如果响应不是 200 状态,oauth 插件仅返回 4xx 错误状态代码。您可以更改此行为,使其始终根据错误返回确切的 4xx 或 5xx 代码。

如需启用此功能,请在您的 Edge Microgateway 配置中添加 oauth.useUpstreamResponse: true 属性。例如:

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  gracePeriod: 10
  useUpstreamResponse: true

使用 OAuth2 令牌安全性

本部分介绍如何获取 OAuth2 访问令牌和刷新令牌。访问令牌用于通过微网关进行安全的 API 调用。刷新令牌用于获取新的访问令牌。

如何获取访问令牌

本部分介绍如何使用 edgemicro-auth 代理获取访问令牌。

您还可以使用 edgemicro token CLI 命令获取访问令牌。如需详细了解 CLI,请参阅管理令牌

API 1:以正文参数的形式发送凭据

在网址中替换您的组织和环境名称,并将从 Apigee Edge 上的开发者应用获取的使用方 ID 和使用方密钥值替换为 client_idclient_secret 正文参数:

curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \
-d '{"grant_type": "client_credentials", "client_id": "your_client_id", \
"client_secret": "your_client_secret"}' -H "Content-Type: application/json"

API 2:在基本 Auth 标头中发送凭据

将客户端凭据作为基本身份验证标头发送,将 grant_type 作为表单参数发送。RFC 6749:OAuth 2.0 授权框架中也介绍了此命令表单。

http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \
-d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"

输出示例

该 API 会返回 JSON 响应。请注意,tokenaccess_token 属性之间没有区别。您可以任选其一。请注意,expires_in 是一个整数值(以秒为单位)。
{
"token": "eyJraWQiOiIxIiwidHlwIjoi",
"access_token": "eyJraWQiOiIxIiwid",
"token_type": "bearer",
"expires_in": 1799
}

如何获取刷新令牌

如需获取刷新令牌,请对 edgemicro-auth 代理的 /token 端点进行 API 调用。您必须使用 password 授权类型进行此 API 调用。以下步骤演示了如何完成整个过程。

  1. 使用 /token API 获取访问和刷新令牌。请注意,授权类型为 password
    curl -X POST \
      https://your_organization-your_environment.apigee.net/edgemicro-auth/token \
      -H 'Content-Type: application/json' \
      -d '{
       "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq",
       "client_secret":"bUdDcFgv3nXffnU",
       "grant_type":"password",
       "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq",
       "password":"bUdD2FvnMsXffnU"
    }'

    该 API 会返回一个访问令牌和一个刷新令牌。响应类似于以下内容。请注意,expires_in 值是整数,并且以秒为单位指定。

    {
        "token": "your-access-token",
        "access_token": "your-access-token",
        "token_type": "bearer",
        "expires_in": 108,
        "refresh_token": "your-refresh-token",
        "refresh_token_expires_in": 431,
        "refresh_token_issued_at": "1562087304302",
        "refresh_token_status": "approved"
    }
  2. 您现在可以使用刷新令牌来获取新的访问令牌,只需调用同一 API 的 /refresh 端点即可。例如:
    curl -X POST \
      https://willwitman-test.apigee.net/edgemicro-auth/refresh \
      -H 'Content-Type: application/json' \
      -d '{
       "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq",
       "client_secret":"bUdDc2Fv3nMXffnU",
       "grant_type":"refresh_token",
       "refresh_token":"your-refresh-token"
    }'

    该 API 会返回一个新的访问令牌。响应类似于以下内容:

    {
        "token": "your-new-access-token"
        }

永久监控

指定配置文件端点

如果运行多个 Edge Microgateway 实例,您可能希望在一个位置管理它们的配置。为此,您可以指定一个 HTTP 端点,Edge Micro 可从该端点下载其配置文件。您可以在启动 Edge Micro 时使用 -u 标志指定此端点。

例如:

edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key

其中,mgconfig 端点会返回配置文件的内容。该文件默认位于 ~/.edgemicro 中,采用的命名惯例为:org-env-config.yaml

停用 TCP 连接数据缓冲

您可以使用 nodelay 配置属性为 Edge Microgateway 使用的 TCP 连接停用数据缓冲。

默认情况下,TCP 连接在将数据发送出去之前使用 Nagle 算法来缓冲数据。将 nodelay 设置为 true 会禁止此行为(每次调用 socket.write() 时数据都会立即触发数据)。如需了解详情,另请参阅 Node.js 文档

如需启用 nodelay,请修改 Edge Micro 配置文件,如下所示:

edgemicro:
  nodelay: true
  port: 8000
  max_connections: 1000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

以独立模式运行 Edge Microgateway

您可以运行 Edge Microgateway 与任何 Apigee Edge 依赖项完全断开连接。这种场景称为独立模式,可让您在没有互联网连接的情况下运行和测试 Edge Microgateway。

在独立模式下,以下功能将不起作用,因为它们需要连接到 Apigee Edge:

  • OAuth 和 API 密钥
  • 配额
  • 分析

另一方面,自定义插件和高峰控制可以正常运行,因为它们不需要连接到 Apigee Edge。此外,借助一个名为 extauth 的新插件,您还可以在独立模式下授权使用 JWT 对微网关进行 API 调用。

配置并启动网关

如需以独立模式运行 Edge Microgateway,请执行以下操作

  1. 创建一个如下所示的配置文件:$HOME/.edgemicro/$ORG-$ENV-config.yaml

    例如:

    vi $HOME/.edgemicro/foo-bar-config.yaml
  2. 将以下代码粘贴到该文件中:
    edgemicro:
      port: 8000
      max_connections: 1000
      config_change_poll_interval: 600
      logging:
        level: error
        dir: /var/tmp
        stats_log_interval: 60
        rotate_interval: 24
      plugins:
        sequence:
          - extauth
          - spikearrest
    headers:
      x-forwarded-for: true
      x-forwarded-host: true
      x-request-id: true
      x-response-time: true
      via: true
    extauth:
      publickey_url: https://www.googleapis.com/oauth2/v1/certs
    spikearrest:
      timeUnit: second
      allow: 10
      buffersize: 0
  3. 导出以下环境变量并将其值设为“1”:
    export EDGEMICRO_LOCAL=1
  4. 执行以下 start 命令,您可以在其中提供值来实例化本地代理:
    edgemicro start -o $ORG -e $ENV -a $LOCAL_PROXY_NAME \
      -v $LOCAL_PROXY_VERSION -t $TARGET_URL -b $BASE_PATH

    其中:

    • $ORG 是您在配置文件名称中使用的“组织”名称。
    • $ENV 是您在配置文件名称中使用的“env”名称。
    • $LOCAL_PROXY_NAME 是要创建的本地代理的名称。您可以使用任何名称。
    • $LOCAL_PROXY_VERSION 是代理的版本号。
    • $TARGET_URL 是代理目标的网址。(目标是代理调用的服务。)
    • $BASE_PATH 是代理的基本路径。此值必须以正斜杠开头。对于根基本路径,请仅指定正斜杠,例如“/”。

    例如:

    edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  5. 测试配置。
    curl http://localhost:8000/echo  { "error" : "missing_authorization" }

    由于 extauth 插件位于 foo-bar-config.yaml 文件中,因此您会收到“missing_authorization”错误。此插件会验证 API 调用的 Authorization 标头中必须存在的 JWT。在下一部分中,您将获得一个 JWT,将允许 API 调用不出现任何错误。

示例:获取授权令牌

以下示例展示了如何从 Apigee Edge (edgemicro-auth/jwkPublicKeys) 上的 Edge Microgateway JWT 端点获取 JWT。对 Edge Microgateway 执行标准设置和配置时,系统会部署此端点。如需从 Apigee 端点获取 JWT,您必须先执行标准的 Edge Microgateway 设置,并连接到互联网。Apigee 端点在此处仅作示例之用,并非必需项。您可以根据需要使用其他 JWT 令牌端点。如果这样做,您将需要使用为该端点提供的 API 来获取 JWT。

以下步骤说明了如何使用 edgemicro-auth/jwkPublicKeys 端点获取令牌:

  1. 您必须对 Edge Microgateway 执行标准设置和配置,以将 edgemicro-auth 代理部署到 Apigee Edge 上的组织/环境。如果您以前执行过此步骤,则无需重复。
  2. 如果您已将 Edge Microgateway 部署到 Apigee Cloud,则必须连接到互联网,才能从此端点获取 JWT。
  3. 停止 Edge Microgateway:
    edgemicro stop
  4. 在您之前创建的配置文件 ($HOME/.edgemicro/org-env-config.yaml) 中,将 extauth:publickey_url 特性指向 Apigee Edge 组织/环境中的 edgemicro-auth/jwkPublicKeys 端点。例如:
    extauth:
      publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
  5. 像之前一样,使用您在配置文件名称中使用的组织/环境名称重启 Edge Microgateway。例如:
    edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  6. 从授权端点获取 JWT 令牌。由于您使用的是 edgemicro-auth/jwkPublicKeys 端点,因此可以使用以下 CLI 命令:

您可以使用 edgemicro token 命令或 API 为 Edge Microgateway 生成 JWT。例如:

edgemicro token get -o your_org -e your_env \
  -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy

其中:

  • your_org 是您之前为其配置了 Edge Microgateway 的 Apigee 组织的名称。
  • your_env 是组织中的一个环境。
  • i 选项指定来自具有产品包含 edgemicro-auth 代理的开发者应用的使用方密钥。
  • 对于具有包含 edgemicro-auth 代理的产品的开发者应用,s 选项可指定使用方密钥。

此命令要求 Apigee Edge 生成 JWT,稍后可用于验证 API 调用。

另请参阅生成令牌

测试独立配置

要测试配置,请使用在 Authorization 标头中添加的令牌调用 API,如下所示:

curl http://localhost:8000/echo -H "Authorization: Bearer your_token

例如:

curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"

输出示例:

{
   "headers":{
      "user-agent":"curl/7.54.0",
      "accept":"*/*",
      "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
      "client_received_start_timestamp":"1535134472699",
      "x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==",
      "target_sent_start_timestamp":"1535134472702",
      "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
      "x-forwarded-proto":"http",
      "x-forwarded-host":"localhost:8000",
      "host":"mocktarget.apigee.net",
      "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
      "via":"1.1 localhost, 1.1 google",
      "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
      "connection":"Keep-Alive"
   },
   "method":"GET",
   "url":"/",
   "body":""
}

使用本地代理模式

在本地代理模式下,Edge Microgateway 不需要在 Apigee Edge 上部署微网关感知代理。相反,您可在启动微网关时通过提供本地代理名称、基本路径和目标网址来配置“本地代理”。然后,对微网关的 API 调用会发送到本地代理的目标网址。在所有其他方面,本地代理模式的工作方式与在普通模式下运行 Edge Microgateway 完全相同。身份验证的工作方式与高峰控制和配额强制执行、自定义插件等相同。

使用场景和示例

如果您只需要将单个代理与 Edge Microgateway 实例相关联,本地代理模式非常有用。例如,您可以将 Edge Microgateway 作为 Sidecar 代理注入 Kubernetes,其中微网关和服务各自在单个 Pod 中运行,微网关管理进出其配套服务的流量。下图说明了此架构,其中 Edge Microgateway 在 Kubernetes 集群中充当 Sidecar 代理。每个微网关实例仅与其配套服务上的单个端点进行通信:

Edgemicro 作为 Sidecar

这种架构的优势在于,Edge Microgateway 可为部署到容器环境(例如 Kubernetes 集群)的各项服务提供 API 管理。

配置本地代理模式

如需将 Edge Microgateway 配置为以本地代理模式运行,请按以下步骤操作:

  1. 运行 edgemicro init 以设置本地配置环境,方法与在典型 Edge Microgateway 设置中执行的操作完全相同。另请参阅配置 Edge Microgateway
  2. 运行 edgemicro configure,就像在典型的 Edge Microgateway 设置过程中执行的操作一样。例如:
    edgemicro configure -o your_org -e your_env -u your_apigee_username

    此命令会将 edgemicro-auth 政策部署到 Edge,并返回启动微网关所需的密钥和密文。如需帮助,请参阅配置 Edge Microgateway

  3. 在 Apigee Edge 上,创建一个具有以下强制性配置要求的 API 产品(您可以视需要管理所有其他配置):
    • 必须向产品添加 edgemicro-auth 代理。此代理是在您运行 edgemicro configure 时自动部署的。
    • 必须提供资源路径。Apigee 建议将此路径添加到产品:/**。如需了解详情,请参阅配置资源路径的行为。另请参阅 Edge 文档中的创建 API 产品
  4. 在 Apigee Edge 上,创建开发者;如果您愿意,也可以使用现有开发者。如需帮助,请参阅使用 Edge 管理界面添加开发者

  5. 在 Apigee Edge 上,创建开发者应用。您必须将刚刚创建的 API 产品添加到应用。如需帮助,请参阅在 Edge 管理界面中注册应用
  6. 在安装 Edge Microgateway 的机器上,导出以下值为“1”的环境变量。
    export EDGEMICRO_LOCAL_PROXY=1
  7. 执行以下 start 命令:
    edgemicro start -o your_org -e your_environment -k your_key -s your_secret \
        -a local_proxy_name -v local_proxy_version -t target_url -b base_path

    其中:

    • your_org 是您的 Apigee 组织。
    • your_environment 是贵组织的环境。
    • your_key 是您运行 edgemicro configure 时返回的键。
    • your_secret 是您运行 edgemicro configure 时返回的 Secret。
    • local_proxy_name 是要创建的本地代理的名称。
    • local_proxy_version 是代理的版本号。
    • target_url 是代理目标(代理将调用的服务)的网址。
    • base_path 是代理的基本路径。此值必须以正斜杠开头。对于根基本路径,请仅指定正斜杠,例如“/”。

    例如:

    edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \
      -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \
      -t http://mocktarget.apigee.net -b /echo

测试配置

您可以通过调用代理端点来测试本地代理配置。例如,如果您指定 /echo 的基本路径,可以按如下方式调用代理:

curl  http://localhost:8000/echo
{
  "error" : "missing_authorization",
  "error_description" : "Missing Authorization header"
}

由于您未提供有效的 API 密钥,此初始 API 调用产生了错误。您可以在之前创建的开发者应用中找到该密钥。在 Edge 界面中打开应用,复制使用方密钥,然后使用以下命令使用该密钥:

curl  http://localhost:8000/echo -H 'x-api-key:your_api_key'

例如:

curl  http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"

输出示例:

{
  "headers":{
    "user-agent":"curl/7.54.0",
    "accept":"*/*",
    "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
    "client_received_start_timestamp":"1535134472699",
    "x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==",
    "target_sent_start_timestamp":"1535134472702",
    "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
    "x-forwarded-proto":"http",
    "x-forwarded-host":"localhost:8000",
    "host":"mocktarget.apigee.net",
    "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
    "via":"1.1 localhost, 1.1 google",
    "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
    "connection":"Keep-Alive"
  },
  "method":"GET",
  "url":"/",
  "body":""
}

使用同步器

本部分介绍如何使用同步器。同步器是一项可选功能,允许 Edge Microgteway 从 Apigee Edge 检索配置数据并将其写入本地 Redis 数据库,从而提高 Edge Microgteway 的弹性。同步器实例运行时,在不同节点上运行的其他 Edge Microgateway 实例可以直接从此数据库检索其配置。

目前支持将同步功能与 Redis 5.0.x 搭配使用。

什么是同步器?

同步器为 Edge Microgateway 提供一定程度的弹性。它有助于确保 Edge Microgateway 的每个实例都使用相同的配置,并确保在互联网中断时,Edge Microgateway 实例可以正常启动并运行。

默认情况下,Edge Microgateway 实例必须能够与 Apigee Edge 通信,以检索和刷新其配置数据,例如 API 代理和 API 产品配置。如果与 Edge 的互联网连接中断,微网关实例可以继续运行,因为最新配置数据已缓存。但是,如果没有明确的连接,新的微网关实例将无法启动。此外,互联网中断可能会导致一个或多个微网关实例在运行时使用与其他实例不同步的配置信息。

Edge Microgateway 同步器为 Edge Microgateway 实例提供了一种替代机制,用于检索启动和处理 API 代理流量所需的配置数据。从对 Apigee Edge 的调用中检索到的配置数据包括:jwk_public_keys 调用、jwt_public_key 调用、引导调用和 API 产品调用。 同步器使在不同节点上运行的所有 Edge Microgateway 实例能够正确启动并保持同步,即使 Edge Microgateway 与 Apigee Edge 之间的互联网连接中断也是如此。

同步器是经过专门配置的 Edge Microgateway 实例。它的唯一用途是轮询 Apigee Edge(时间可配置)、检索配置数据并将其写入本地 Redis 数据库。同步器实例本身无法处理 API 代理流量。在不同节点上运行的 Edge Microgateway 的其他实例可以配置为从 Redis 数据库而不是从 Apigee Edge 检索配置数据。由于所有微网关实例都从本地数据库拉取其配置数据,因此即使互联网中断,它们也可以启动并处理 API 请求。

配置同步器实例

将以下配置添加到要用作同步器的 Edge Microgateway 安装的 org-env/config.yaml 文件中:

edgemicro:
  redisHost: host_IP
  redisPort: host_port
  redisDb: database_index
  redisPassword: password
edge_config:
  synchronizerMode: 1
  redisBasedConfigCache: true

例如:

edgemicro:
  redisHost: 192.168.4.77
  redisPort: 6379
  redisDb: 0
  redisPassword: codemaster
edge_config:
  synchronizerMode: 1
  redisBasedConfigCache: true
选项 说明
redisHost 运行 Redis 实例的主机。默认值:127.0.0.1
redisPort Redis 实例的端口。默认值:6379
redisDb 要使用的 Redis 数据库。默认值:0
redisPassword 您的数据库密码。

最后,保存配置文件并启动 Edge Microgateway 实例。它将开始轮询 Apigee Edge,并将下载的配置数据存储在 Redis 数据库中。

配置常规 Edge Microgateway 实例

在同步器运行的情况下,您可以配置其他 Edge Microgateway 节点,以运行处理 API 代理流量的常规微网关实例。但是,您可以对这些实例进行配置,使其从 Redis 数据库而不是 Apigee Edge 获取其配置数据。

将以下配置添加到其他各个 Edge Microgateway 节点的 org-env/config.yaml 文件中。请注意,synchronizerMode 属性设置为 0。此属性将实例设置为作为处理 API 代理流量的常规 Edge Microgateway 实例运行,并且实例将从 Redis 数据库获取其配置数据。

edgemicro:
  redisHost: host_IP
  redisPort: host_port
  redisDb: database_index
  redisPassword: password
edge_config:
  synchronizerMode: 0
  redisBasedConfigCache: true

例如:

edgemicro:
  redisHost: 192.168.4.77
  redisPort: 6379
  redisDb: 0
  redisPassword: codemaster
edge_config:
  synchronizerMode: 0
  redisBasedConfigCache: true

配置属性

添加了以下配置属性以支持使用同步器:

属性 说明
edge_config.synchronizerMode 0 或 1

如果为 0(默认值),则 Edge Microgateway 会以其标准模式运行。

如果为 1,则启动 Edge Microgateway 实例作为同步器运行。在此模式下,实例将从 Apigee Edge 拉取配置数据,并将其存储在本地 Redis 数据库中。此实例无法处理 API 代理请求;它的唯一用途就是轮询 Apigee Edge 以获取配置数据,并将其写入本地数据库。然后,您必须将其他微网关实例配置为从数据库读取数据。

edge_config.redisBasedConfigCache true 或 false 如果为 true,Edge Microgateway 实例从 Redis 数据库而不是 Apigee Edge 提取其配置数据。Redis 数据库必须与同步器配置为写入的 Redis 数据库相同。如果 Redis 数据库不可用或数据库为空,则微网关会查找现有的 cache-config.yaml 文件来获取其配置。

如果为 false(默认值),Edge Microgateway 实例会照常从 Apigee Edge 提取配置数据。

edgemicro.config_change_poll_interval 时间间隔(以秒为单位) 指定同步器从 Apigee Edge 拉取数据的轮询间隔。

为插件配置排除网址

您可以将微网关配置为跳过处理指定网址的插件。您可以全局(针对所有插件)或针对特定插件配置这些“排除”网址。

例如:

...
edgemicro:
  ...
  plugins:
    excludeUrls: '/hello,/proxy_one' # global exclude urls
    sequence:
      - oauth
      - json2xml
      - quota
json2xml:
  excludeUrls: '/hello/xml'  # plugin level exclude urls
...

在此示例中,插件不会处理具有 /hello/proxy_one 路径的传入 API 代理调用。此外,对于路径中含有 /hello/xml 的 API,系统会跳过 json2xml 插件。

使用环境变量值设置配置属性

您可以使用配置文件中的标记指定环境变量。指定的环境变量标记将被替换为实际的环境变量值。替换内容仅存储在内存中,不会存储在原始配置或缓存文件中。

在此示例中,属性 key 会替换为 TARGETS_SSL_CLIENT_KEY 环境变量的值,依此类推。

targets:
  - ssl:
      client:
        key: <E>TARGETS_SSL_CLIENT_KEY</E>
        cert: <E>TARGETS_SSL_CLIENT_CERT</E>
        passphrase: <E>TARGETS_SSL_CLIENT_PASSPHRASE</E>

在此示例中,<n> 标记用于表示一个整数值。仅支持正整数。

edgemicro:
  port: <E><n>EMG_PORT</n></E>

在此示例中,<b> 标记用于表示布尔值(即 true 或 false)。

quotas:
  useRedis: <E><b>EMG_USE_REDIS</b></E>