Edge Microgateway 的作業和設定參考資料

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。
info

Edge Microgateway 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 是先前由 configure 指令傳回的金鑰。
    • secret 是先前由 configure 指令傳回的金鑰。

    範例

    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 是先前由 configure 指令傳回的金鑰。
    • secret 是先前由 configure 指令傳回的金鑰。

    範例

    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 所需金鑰和密碼的指令列介面指令,可以儲存在下列環境變數中:

  • EDGEMICRO_ORG
  • EDGEMICRO_ENV
  • EDGEMICRO_KEY
  • EDGEMICRO_SECRET

您可以選擇是否設定這些變數。設定這些變數後,使用指令列介面 (CLI) 設定及啟動 Edge Microgateway 時,就不必指定變數值。

在 Edge Microgateway 伺服器上設定 SSL

您可以將 Microgateway 伺服器設為使用 SSL。舉例來說,設定 SSL 後,您可以使用「https」通訊協定,透過 Edge Microgateway 呼叫 API,如下所示:

https://localhost:8000/myapi

如要在 Microgateway 伺服器上設定 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。根據您編輯的設定檔 (預設檔案或執行階段設定檔),按照「變更設定」一文中的步驟操作。

以下是設定檔的 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 包含用戶端私密金鑰、憑證和 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 Proxy

根據預設,Edge Microgateway 會使用部署在 Apigee Edge 的 Proxy 進行 OAuth2 驗證。 首次執行 edgemicro configure 時,系統會部署這個 Proxy。您可以變更這個 Proxy 的預設設定,在 JSON Web Token (JWT) 中加入自訂聲明、設定權杖到期時間,以及產生重新整理權杖。詳情請參閱 GitHub 的 edgemicro-auth 頁面。

使用自訂驗證服務

根據預設,Edge Microgateway 會使用部署在 Apigee Edge 的 Proxy 進行 OAuth2 驗證。 首次執行 edgemicro configure 時,系統會部署這個 Proxy。根據預設,這個 Proxy 的網址會在 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。建議使用「資訊」層級。記錄所有 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

關於記錄檔內容

新增於:2.3.3 版

根據預設,記錄服務會省略下載的 Proxy、產品和 JSON Web Token (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 日期戳記
  • info - 視情況而定。視記錄層級而定,可能是資訊、警告或錯誤。可以是統計記錄的統計資料、警告的警告,或錯誤的錯誤。
  • req - 識別事件。在本例中,要求來自用戶端。
  • m - 要求中使用的 HTTP 動詞。
  • u:網址中位於 basepath 後方的部分。
  • h - Edge Microgateway 監聽的主機和通訊埠號碼。
  • r - 用戶端要求來源的遠端主機和通訊埠。
  • i:要求 ID。這四個活動項目都會共用這個 ID。每項要求都會指派專屬要求 ID。根據要求 ID 關聯記錄檔記錄,可深入瞭解目標的延遲時間。
  • d - Edge Microgateway 收到要求後經過的時間長度 (以毫秒為單位)。在上述範例中,系統在 7 毫秒後收到要求 0 的目標回應 (第 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 日期戳記
  • info - 視情況而定。視記錄層級而定,可能是資訊、警告或錯誤。可以是統計記錄的統計資料、警告的警告,或錯誤的錯誤。
  • treq - 識別事件。在本例中,目標要求為:
  • m - 目標要求中使用的 HTTP 動詞。
  • u:網址中位於 basepath 後方的部分。
  • h - 後端目標的主機和連接埠號碼。
  • i:記錄項目的 ID。這四個活動項目都會共用這個 ID。

3. 目標傳入的回應範例

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

1436403888651 - Unix 日期戳記

  • info - 視情況而定。視記錄層級而定,可能是資訊、警告或錯誤。可以是統計記錄的統計資料、警告的警告,或錯誤的錯誤。
  • tres:識別事件。在本例中,目標是回應。
  • s - HTTP 回應狀態。
  • d - 時間長度 (以毫秒為單位)。目標呼叫 API 所花費的時間。
  • i:記錄項目的 ID。這四個活動項目都會共用這個 ID。

4. 傳送給用戶端的範例回應

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

1436403888651 - Unix 日期戳記

  • info - 視情況而定。視記錄層級而定,可能是資訊、警告或錯誤。可以是統計記錄的統計資料、警告的警告,或錯誤的錯誤。
  • 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 Proxy 的網址。這個 Proxy 會做為驗證端點,向用戶端核發已簽署的存取權杖。執行 edgemicro configure 指令部署 Proxy 時,系統會傳回這個網址。詳情請參閱「設定及配置 Edge Microgateway」。

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 的數字。
  • 記錄:
    • 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 上進行的任何變更 (產品、可感知微型閘道的 Proxy 等變更),以及對本機設定檔所做的變更。
  • disable_config_poll_interval: (預設值:false) 設為 true 即可關閉自動輪詢變更。
  • request_timeout:設定目標要求的逾時時間。逾時時間以秒為單位。如果發生逾時,Edge Microgateway 會傳回 504 狀態碼。(新增 2.4.x 版)

標頭屬性

這些設定可設定特定 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 的標頭。如果目標需要將授權標頭用於其他用途,您可能需要變更預設值。
  • api-key-header:(預設值:x-api-key) 用於將 API 金鑰傳遞至 Edge Microgateway 的標頭或查詢參數名稱。另請參閱「使用 API 金鑰」。
  • keepAuthHeader:(預設值:false) 如果設為 true,要求中傳送的 Authorization 標頭會傳遞至目標 (保留)。
  • allowOAuthOnly:如果設為 true,每個 API 都必須攜帶 Authorization 標頭和 Bearer 存取權杖。只允許 OAuth 安全性模型 (同時維持回溯相容性)。(4.2.x 新增)
  • allowAPIKeyOnly - 如果設為 true,每個 API 都必須攜帶含有 API 金鑰的 x-api-key 標頭 (或自訂位置)。您只能允許 API 金鑰安全模式 (同時維持回溯相容性)。(4.2.x 版新增)

外掛程式專屬屬性

如要瞭解各外掛程式的可設定屬性,請參閱「使用外掛程式」。

篩選 Proxy

您可以篩選 Edge Microgateway 例項要處理的微閘道感知 Proxy。 Edge Microgateway 啟動時,會下載與其相關聯機構中的所有微閘道感知 Proxy。使用下列設定,限制微型閘道處理的 Proxy。舉例來說,這項設定會將微閘道處理的 Proxy 數量限制為三個:edgemicro_proxy-1、edgemicro_proxy-2 和 edgemicro_proxy-3:

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

遮蓋 Analytics 資料

下列設定可防止要求路徑資訊顯示在 Edge Analytics 中。在微閘道設定中新增下列項目,遮蓋要求 URI 和/或要求路徑。請注意,URI 包含要求的主機名稱和路徑部分。

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

在公司防火牆後方設定 Edge Microgateway

支援 4.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 要求建立通道。(如果用於設定 Proxy 的環境變數已啟用 TLS,情況也是如此)。

選項 2:

第二個選項是在 microgateway 設定檔中指定 Proxy,並將 proxy_tunnel 設為 false。例如:

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

在這種情況下,您可以設定下列變數,控管要使用的每個 HTTP Proxy 的主機,或哪些主機不應處理 Edge Microgateway Proxy:HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY。

您可以將 NO_PROXY 設定為以半形逗號分隔的網域清單,Edge Microgateway 不應將這些網域的流量導向 Proxy。例如:

export NO_PROXY='localhost,localhost:8080'

將 HTTP_PROXY 和 HTTPS_PROXY 設為 HTTP Proxy 端點,Edge Microgateway 即可將訊息傳送至該端點。例如:

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 的 Proxy 中使用萬用字元

您可以在 edgemicro_* (適用於 Microgateway) 代理程式的基本路徑中使用一或多個「*」萬用字元。舉例來說,如果基本路徑為 /team/*/members,用戶端就能呼叫 https://[host]/team/blue/members 和 https://[host]/team/green/members,您不必建立新的 API Proxy 來支援新團隊。請注意,系統不支援 /**/。

重要事項: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 提出要求的用戶端。如要取得 API 金鑰,請從包含 Edge Microgateway 驗證 Proxy 的 Apigee Edge 產品中,複製「消費者金鑰」(也稱為「用戶端 ID」) 值。

快取金鑰

API 金鑰會換成不記名權杖並快取。如要停用快取,請在傳送至 Edge Microgateway 的要求中設定 Cache-Control: no-cache 標頭。

使用 OAuth2 權杖安全性

如要瞭解如何搭配 Proxy 要求使用 OAuth 權杖,請參閱「保護 Edge Microgateway 安全」。

使用 API 金鑰

如要瞭解如何搭配 Proxy 要求使用 API 金鑰,請參閱「保護 Edge Microgateway 安全」一文。

設定 API 金鑰名稱

根據預設,x-api-key 是用於 API 金鑰標頭或查詢參數的名稱。如要變更這個預設值,請按照「變更設定」一節的說明,在設定檔中進行變更。 舉例來說,如要將名稱變更為 apiKey,請執行下列操作:

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