設定虛擬主機

私有雲的邊緣 4.17.01 版

Edge 上的虛擬主機會定義公開 API Proxy 的網域和邊緣路由器通訊埠,以及應用程式用來存取 API Proxy 的網址。虛擬主機也會定義要透過 HTTP 通訊協定或加密 HTTPS 通訊協定存取 API Proxy。

進行 Edge 新手上路流程時,您必須建立機構、環境和虛擬主機。Edge 提供 setup-org 指令,可讓新使用者更輕鬆地進行這項程序。

建立虛擬主機時,必須指定下列資訊:

  • 您在 API Proxy 中用來參照該虛擬主機的名稱
  • 虛擬主機路由器上的通訊埠。一般來說,這些通訊埠是從 9001 開始,並針對每個新的虛擬主機各增加一個。
  • 虛擬主機的主機別名。通常是虛擬主機的 DNS 名稱。

Edge Router 會將傳入要求的 Host 標頭與可用的主機別名清單進行比較,這是判斷處理要求的 API Proxy 的一部分。透過虛擬主機提出要求時,請指定與虛擬主機主機別名相符的網域名稱,或指定路由器的 IP 位址和包含主機別名的「Host」標頭。

舉例來說,如果您在通訊埠 9001 上建立了一個具有 myapis.apigee.net 主機別名的虛擬主機,則透過該虛擬主機向 API 發出的 cURL 要求可能會使用下列其中一種形式:

  • 如果您有 myapis.apigee.net 的 DNS 項目:

    curl http://myapis.apigee.net:9001/{proxy-base-path}/{resource-path}
  • 如果沒有 myapis.apigee.net 的 DNS 項目:

    curl http://<routerIP>:9001/{proxy-base-path}/{resource-path} -H 'Host: myapis.apigee.net'

    在這份表單中,你需要在路由器的主機別名中傳遞 IP 標頭位址。

    注意:curl 指令、多數瀏覽器和其他許多公用程式都會自動將主機標頭附加在要求中的網域,因此您可以在以下表單中使用 curl 指令:


    curl http://<routerIP>:9001/{proxy-base-path}/{resource-path}

沒有虛擬主機 DNS 項目時適用的選項

如果沒有 DNS 項目,其中一個選項是將主機別名設為路由器的 IP 位址和虛擬主機的通訊埠,例如 <routerIP>:port。例如:

192.168.1.31:9001

接著,請使用下列格式建立 curl 指令:

curl http://<routerIP>:9001/{proxy-base-path}/{resource-path} 

我們建議使用這個選項,因為它可以和 Edge UI 搭配運作。

如果您有多個路由器,請為各個路由器新增主機別名,並指定各個路由器的 IP 位址和虛擬主機的通訊埠。

或者,您也可以將主機別名設為值,例如 temp.hostalias.com。接著,您就必須在每次要求時傳遞 Host 標頭:

curl -v http://<routerIP>:9001/{proxy-base-path}/{resource-path}  -H 'host: temp.hostalias.com'

或是在 /etc/hosts 檔案中新增主機別名。例如,在 /etc/hosts 中新增這一行:

192.168.1.31   temp.hostalias.com

接著,您可以提出要求,就像擁有 DNS 項目一樣:

curl -v http://myapis.apigee.net:9001/{proxy-base-path}/{resource-path}

在虛擬主機中使用受保護的通訊埠

如要建立將路由器繫結到受保護的通訊埠 (例如小於 1024 的通訊埠號碼),您必須將路由器設為以具備這些通訊埠存取權的使用者的身分執行。根據預設,路由器會以使用者「apigee」的形式執行,這個身分無法存取獲得授權的通訊埠。

如何以其他使用者的身分執行路由器:

  1. 以根目錄建立 /opt/apigee/etc/edge-router.d/RUN_USER.sh 檔案。
  2. 在檔案中新增下列項目:
    RUN_USER=root
    如果不想以根層級執行路由器,請指定具備通訊埠存取權的使用者。
  3. 儲存檔案。
  4. 如果您指定了 Root 權限以外的使用者,請將檔案擁有者變更為該使用者:
    > chown USER:USER /opt/apigee/etc/edge-router.d/RUN_USER.sh
  5. 重新啟動路由器:
    > /opt/apigee/apigee-service/bin/apigee-service Edge-router restart