Edge Microgate 操作和配置参考

您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。
信息

Edge Microgateway v. 2.4.x

概览

本主题讨论如何管理和配置 Edge Microgateway,包括监控、日志记录和调试。

进行配置更改

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

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

本部分讨论了这些文件,以及您需要了解的有关更改这些文件的信息。如需详细了解配置文件设置,请参阅 Edge Microgateway 配置参考。

默认系统配置文件

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

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

其中,[prefix] 是 npm 前缀目录。 请参阅 Edge Microgateway 安装在何处。

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

  1. 拨打 edgemicro init
  2. 拨打 edgemicro configure [params]
  3. 拨打 edgemicro start [params]

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

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

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

  1. edgemicro stop
  2. edgemicro configure [params]
  3. edgemicro start [params]

运行实例的动态配置文件

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

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

  1. 重新加载 Edge Microgateway 配置:
    edgemicro reload -o [org] -e [env] -k [key] -s [secret]

    其中:

    • org 是您的 Edge 组织名称(您必须是组织管理员)。
    • env 是您组织中的环境(例如测试环境或生产环境)。
    • key 是之前由配置命令返回的密钥。
    • secret 是之前由配置命令返回的密钥。

    示例

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188016b3c39177d64a88754d615c74e1f78b6181d000723 -s 05c14356e42ed136b8dd35cf8a18531ff52d7299134677e30ef4e34ab0cc824

如果 Edge Microgateway 已停止:

  1. 重启 Edge Microgateway:
    edgemicro start -o [org] -e [env] -k [key] -s [secret]

    其中:

    • org 是您的 Edge 组织名称(您必须是组织管理员)。
    • env 是您组织中的环境(例如测试环境或生产环境)。
    • key 是之前由配置命令返回的密钥。
    • secret 是之前由配置命令返回的密钥。

    示例

    edgemicro start -o docs -e test -k 701e70ee718ce6dc188016b3c39177d64a88754d615c74e1f78b6181d000723 -s 05c14356e42ed136b8dd35cf8a18531ff52d7299134677e30ef4e34ab0cc824

以下是一个配置文件示例。如需详细了解配置文件设置,请参阅 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 所需的密钥和 Secret 的命令行界面命令可以存储在以下环境变量中:

  • EDGEMICRO_ORG
  • EDGEMICRO_ENV
  • EDGEMICRO_KEY
  • EDGEMICRO_SECRET

您可以选择是否设置这些变量。如果您设置了这些变量,则在使用命令行界面 (CLI) 配置和启动 Edge Microgateway 时,无需指定它们的值。

在 Edge Microgateway 服务器上配置 SSL

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

https://localhost:8000/myapi

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

  1. 使用 openssl 实用程序或您喜欢的任何方法生成或获取 SSL 证书和密钥。
  2. 将 edgemicro:ssl 属性添加到 Edge Microgateway 配置文件。如需查看完整的选项列表,请参阅下表。如需详细了解如何修改 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。根据您修改的配置文件(默认文件或运行时配置文件),按照进行配置更改中所述的步骤操作。

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

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 包含客户端的私钥、证书和 CA 证书(采用 PFX 格式)的 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 配置文件中,使用 targets 元素设置 SSL/TLS 选项。

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

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

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

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 的示例:

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

以下是所有受支持的客户端选项的列表:

选项 说明
pfx 包含客户端的私钥、证书和 CA 证书(采用 PFX 格式)的 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 和日志文件。

如何设置日志记录级别

您可以设置以下日志级别:info、warn 和 error。建议使用 INFO 级别。它会记录所有 API 请求和响应,并且是默认值。

如何更改日志间隔

您可以在 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

注意: 归档的日志文件不会压缩。当间隔开始时,系统会创建一个带有新时间戳的新日志文件。

良好的日志文件维护实践

随着时间的推移,日志文件数据会不断累积,Apigee 建议您采取以下做法:

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

日志文件命名惯例

每个 Edge Microgateway 实例都会生成三种类型的日志文件:

  • api - 记录流经 Edge Microgateway 的所有请求和响应。API 计数器(统计数据)和错误也会记录到此文件中。
  • err - 记录发送到 stderr 的所有内容。
  • out - 记录发送到 stdout 的所有内容。

命名惯例如下:

edgemicro-<Host Name>-<Instance ID>-<Log Type>.log

例如:

edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log
edgemicro-mymachine-local-MTQzNTg1NDMODAyMQ-err.log
edgemicro-mymachine-local-mtqzntgndmxodaymq-out.log

日志文件内容简介

添加于:v2.3.3

默认情况下,日志记录服务会省略下载的代理、产品和 JSON Web 令牌 (JWT) 的 JSON。如果您希望将这些对象输出到日志文件,请在启动 Edge Microgateway 时设置 DEBUG=*。例如:

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

注意: 在 Windows 上,请使用 SET DEBUG=*

“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 日期戳
  • 信息 - 取决于上下文。可以是信息、警告或错误,具体取决于日志级别。可以是统计记录的统计信息、警告的警告或错误的错误。
  • req - 标识事件。在本例中,为来自客户端的请求。
  • m - 请求中使用的 HTTP 动词。
  • u - 网址中位于基本路径后面的部分。
  • h - Edge Microgateway 正在监听的主机和端口号。
  • r - 客户端请求的来源远程主机和端口。
  • i - 请求 ID。所有这四项活动条目都将共用此 ID。每个请求都会获配一个唯一请求 ID。通过请求 ID 将日志记录相关联,可以深入了解目标的延迟时间。
  • d - 自 Edge Microgateway 收到请求以来的时长(以毫秒为单位)。在上面的示例中,目标对请求 0 的响应在 7 毫秒后收到(第 3 行),并在额外的 4 毫秒后发送给客户端(第 4 行)。换句话说,总请求延迟时间为 11 毫秒,其中目标花费了 7 毫秒,Edge Microgateway 本身花费了 4 毫秒。

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

1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
  • 1436403888651 - Unix 日期戳
  • 信息 - 取决于上下文。可以是信息、警告或错误,具体取决于日志级别。可以是统计记录的统计信息、警告的警告或错误的错误。
  • treq - 用于标识事件。在这种情况下,目标请求。
  • m - 目标请求中使用的 HTTP 动词。
  • u - 网址中位于基本路径后面的部分。
  • h - 后端目标的宿主和端口号。
  • i - 日志条目的 ID。所有这四个活动条目都将共享此 ID。

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

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

1436403888651 - Unix 日期戳

  • 信息 - 取决于上下文。可以是信息、警告或错误,具体取决于日志级别。可以是统计记录的统计信息、警告的警告或错误的错误。
  • tres - 标识事件。在这种情况下,目标响应。
  • s - HTTP 响应状态。
  • d - 时长(以毫秒为单位)。目标 API 调用所花费的时间。
  • i - 日志条目的 ID。所有这四个活动条目都将共享此 ID。

4. 发送给客户端的出站响应示例

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

1436403888651 - Unix 日期戳

  • 信息 - 取决于上下文。可以是信息、警告或错误,具体取决于日志级别。可以是统计记录的统计信息、警告的警告或错误的错误。
  • res - 标识事件。在这种情况下,响应客户端。
  • s - HTTP 响应状态。
  • d - 时长(以毫秒为单位)。这是 API 调用所花费的总时间,包括目标 API 所花费的时间和 Edge Microgateway 本身所花费的时间。
  • i - 日志条目的 ID。所有这四个活动条目都将共享此 ID。

日志文件时间安排

日志文件会按照 rotate_interval 配置属性指定的间隔进行轮换。系统会继续将条目添加到同一日志文件中,直到轮换间隔时间到期。不过,每次重新启动 Edge Microgateway 时,它都会收到一个新的 UID,并使用此 UID 创建一组新的日志文件。另请参阅良好的日志文件维护实践。

Edge Microgateway 配置参考文档

配置文件位置

本部分中介绍的配置属性位于 Edge Microgateway 配置文件中。如需详细了解如何更改配置,请参阅更改配置。

edge_config 属性

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

  • bootstrap:(默认值:无)指向在 Apigee Edge 上运行的 Edge Microgateway 特定服务的网址。Edge Microgateway 使用此服务与 Apigee Edge 进行通信。当您执行生成公钥/私钥对的命令 edgemicro genkeys 时,系统会返回此网址。如需了解详情,请参阅设置和配置 Edge Microgateway。
  • jwt_public_key:(默认值:无)指向部署在 Apigee Edge 上的 Edge Microgateway 代理的网址。此代理充当身份验证端点,用于向客户端签发已签名的访问令牌。当您执行以下命令来部署代理时,系统会返回此网址:edgemicro configure。如需了解详情,请参阅设置和配置 Edge Microgateway。

edgemicro 属性

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

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

    res.statusCode = 429; // Too many requests
  • max_connections_hard:(默认值:-1)Edge Microgateway 在关闭连接之前可以同时接收的最大请求数。此设置旨在阻止拒绝服务攻击。通常,将其设置为大于 max_connections 的数字。
  • 日志记录:
    • level:(默认值:error)
      • info - 记录流经 Edge Microgateway 实例的所有请求和响应。
      • warn - 仅记录警告消息。
      • error - 仅记录错误消息。
    • dir:(默认值:/var/tmp)存储日志文件的目录。
    • stats_log_interval:(默认值:60)将统计信息记录写入 API 日志文件的间隔(以秒为单位)。
    • rotate_interval:(默认值:24)日志文件轮换间隔(以小时为单位)。
  • 插件:插件可为 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)设置为 true 可关闭自动更改轮询。
  • request_timeout:为目标请求设置超时。超时时间以秒为单位设置。如果发生超时,Edge Microgateway 会以 504 状态代码进行响应。(已添加 v2.4.x)

headers 属性

这些设置用于配置特定 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 可防止将 via 标头传递给目标。

OAuth 属性

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

  • allowNoAuthorization:(默认值:false)如果设置为 true,则允许 API 调用在没有任何授权标头的情况下通过 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 密钥。
  • keepAuthHeader:(默认值:false)如果设置为 true,则请求中发送的 Authorization 标头会传递给目标(即保留)。
  • allowOAuthOnly - 如果设置为 true,则每个 API 都必须携带包含不记名访问令牌的授权标头。允许您仅允许 OAuth 安全模型(同时保持向后兼容性)。(已添加 4.2.x)
  • allowAPIKeyOnly - 如果设置为 true,则每个 API 都必须携带包含 API 密钥的 x-api-key 标头(或自定义位置)。允许您仅允许 API 密钥安全模型(同时保持向后兼容性)。 (添加于 4.2.x)

插件专用属性

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

过滤代理

您可以过滤 Edge Microgateway 实例将处理哪些支持微网关的代理。 当 Edge Microgateway 启动时,它会下载与其关联的组织中的所有支持微网关的代理。使用以下配置来限制微网关将处理哪些代理。例如,以下配置会将微网关将处理的代理数量限制为 3 个:edgemicro_proxy-1、edgemicro_proxy-2 和 edgemicro_proxy-3:

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

遮盖分析数据

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

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

在公司防火墙后设置 Edge Microgateway

支持的 v4.2.x

如果 Edge Microgateway 安装在防火墙后面,则网关可能无法与 Apigee Edge 通信。在这种情况下,您可以考虑以下两种方案:

选项 1:

第一种方法是在微网关配置文件中将 edgemicro: proxy_tunnel 选项设置为 true:

edge_config:

    proxy: http://10.224.16.85:3128
    proxy_tunnel: true

如果 proxy_tunnel 为 true,Edge Microgateway 会使用 HTTP CONNECT 方法通过单个 TCP 连接建立 HTTP 请求隧道。(如果用于配置代理的环境变量已启用 TLS,情况也是如此)。

选项 2:

第二种方法是在微网关配置文件中指定代理并将 proxy_tunnel 设置为 false。例如:

edge_config:
     proxy: http://10.224.16.85:3128
     proxy_tunnel: false

在这种情况下,您可以设置以下变量来控制要使用的每个 HTTP 代理的主机,或哪些主机不应处理 Edge Microgateway 代理:HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY。

您可以将 NO_PROXY 设置为 Edge Microgateway 不应代理到的网域的英文逗号分隔列表。例如:

export NO_PROXY='localhost,localhost:8080'

将 HTTP_PROXY 和 HTTPS_PROXY 设置为 Edge Microgateway 可以向其发送消息的 HTTP 代理端点。例如:

export HTTP_PROXY='http://localhost:3786'

export HTTPS_PROXY='https://localhost:3786'

如需详细了解这些变量,请参阅:

https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables


另请参阅

如何在公司防火墙后设置 Edge Microgateway(在 Apigee 社区中)。

在支持 Microgateway 的代理中使用通配符

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

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


调试和问题排查

连接到调试器

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

  1. 在调试模式下重启 Edge Microgateway。为此,请将 DEBUG=* 添加到启动命令的开头。例如:

    DEBUG=* edgemicro start -o myorg -e test -k db4e9e8a95aa7fabfdeacbb1169d0a8cbe42bec19c6b98129e02 -s 6e56af7c1b26dfe93dae78a735c8afc9796b077d105ae5618ce7ed

    注意:在 Windows 上,请使用 SET DEBUG=*

  2. 启动调试程序,并将其设置为侦听调试流程的端口号。
  3. 现在,您可以逐步执行 Edge Microgateway 代码、设置断点、查看表达式等。

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

检查日志文件

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

使用 API 密钥安全性

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

密钥缓存

API 密钥会换成不记名令牌,然后缓存起来。您可以通过在发送到 Edge Microgateway 的传入请求中设置 Cache-Control: no-cache 标头来停用缓存。

使用 OAuth2 令牌安全性

如需详细了解如何将 OAuth 令牌与代理请求搭配使用,请参阅保护 Edge Microgateway 的安全。

使用 API 密钥

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

配置 API 密钥名称

默认情况下,x-api-key 是用于 API 密钥标头或查询参数的名称。您可以在配置文件中更改此默认设置,如进行配置更改中所述。 例如,如需将名称更改为 apiKey,请执行以下操作:

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